- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果源 Maybe
为空,我使用 Maybe
switchIfEmpty
方法提供替代结果。但是,我希望仅在源为空时才执行备用源,而在源不为空时不执行它。
在下面的示例中,如果源返回非空 Maybe
,我想避免执行 coSTLyFallback
。当前的实现总是调用它,因为它需要传递给 switchIfEmpty
方法。 Maybe.fromCallable
看起来很有前途,但它只适用于不返回 Maybe.empty
的可调用对象。任何提示表示赞赏。如果 switchIfEmpty
接受一些延迟评估的 Maybe
提供商,那就太好了。
public class StartRxMaybe {
public static void main(String... args) {
System.out.println(new StartRxMaybe().start().blockingGet());
}
private Maybe<Integer> start() {
return func()
.switchIfEmpty(costlyFallback());
}
private Maybe<Integer> func() {
System.out.println("Non-empty maybe returned");
return Maybe.just(1);
}
private Maybe<Integer> costlyFallback() {
System.out.println("Fallback executed anyway");
return LocalDate.now().getMonth() == Month.JULY
? Maybe.just(2)
: Maybe.empty();
}
}
最佳答案
我想我找到了解决方案。使用Maybe.defer
成功并允许通过供应商:
private Maybe<Integer> start() {
return func()
.switchIfEmpty(Maybe.defer(this::costlyFallback));
}
关于java - 也许 switchIfEmpty 惰性评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49906602/
即使我的流不为空,后备流也总是会被创建?这样做的意图是什么?这是非常不惯用的。 另一方面,.onErrorResume 是延迟计算的。 有人可以向我解释一下为什么 .switchIsEmpty 会被急
我有一个像这样的简单存储库实现。 @Repository public interface PolicyRepository extends ReactiveMongoRepository {
我有一些方法 Maybe getLocalFoo() Single> getFooFromInternet() 并且想要检查本地项目,如果它是空的,那么例如从网络中获取该项目。 storage
如果源 Maybe 为空,我使用 Maybe switchIfEmpty 方法提供替代结果。但是,我希望仅在源为空时才执行备用源,而在源不为空时不执行它。 在下面的示例中,如果源返回非空 Maybe,
我有两个方法。 主要方法: @PostMapping("/login") public Mono> loginUser(@RequestBody final LoginUser loginUser)
这里的逻辑是,如果数据库中的评级为空,那么我想从 API 中获取它们。我有以下代码: Observable.from(settingsRatingRepository.getRatingsFromDB
public Mono getMessage(ServerRequest request) { //this call returns Mono return apiClient.hy
我有一个场景,我将从 DB 获取实体列表使用 repository.getAllByIds(ids) 这将返回 Flux 如果 Flux 为空,那么我需要调用 handleAllEntitiesNot
public Mono getMessage(ServerRequest request) { //this call returns Mono return apiClient.hy
RxJava 库方法switchIfEmpty里面的指令,总是被执行。然后将评估可观察对象是否为空,并将返回源或替代项。是否有一种方法只允许传递一个仅在源可观察对象为空时才会执行的可观察对象供应商?
是否有一个运算符可以处理结果/成功,无论 Mono 是否为空。例如: Mono result = sourceMono.flatMap(n -> process(n)).switchIfEmpty(p
是否有一个运算符可以处理结果/成功,无论 Mono 是否为空。例如: Mono result = sourceMono.flatMap(n -> process(n)).switchIfEmpty(p
在 RxJava 2 和 Reactor 中有一个 switchIfEmpty like 方法在当前流中没有元素时切换到新流。 但是当我开始使用Minuty ,当我将我的 Quarkus 示例转换为使
我在试验 RxJava 运算符时遇到了这个问题,但不知道为什么会这样。让我看一个例子,希望问题会很清楚。 我有一个使用 Observable.just 创建的水果 Observable Observa
我正在寻找一种方法来检索替代的 Mono,以防原始 Mono 为空。我找到的最接近的是 Mono.switchIfEmpty,但我的问题是我无法将 lambda 表达式传递给它,因此即使 Mono 具
我是一名优秀的程序员,十分优秀!