- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
RxJava 库方法switchIfEmpty里面的指令,总是被执行。然后将评估可观察对象是否为空,并将返回源或替代项。是否有一种方法只允许传递一个仅在源可观察对象为空时才会执行的可观察对象供应商?
作为java的Optional也是一样的区别
//从缓存中获取数字
private Observable<Integer> getNFromCache(){
return Observable.empty;
}
public Observable<Integer> getNumber(){
return getNFromCache(scope)
.switchIfEmpty(this::doHttpRequest);
}
private Observable<Integer> doHttoRequest(){
return Observable.of(1);
}
我的解决方案
//try to get number from cache
public Observable<Integer> getNFromCache(){
return Observable.empty;
}
private Observable<Integer> getNumber(){
Observable<Integer> result= getNFromCache(scope);
return !result.isEmpty().blocking().first()?result:
result.switchIfEmpty(this::doHttpRequest);
}
public Observable<Integer> doHttoRequest(){
return Observable.of(1);
}
谢谢
最佳答案
There is a method that allows to pass just a supplier of observable that will be execute only if the source observable is empty?
安Observable
可以看作是供应商:它将在稍后生成您的值(即:当您订阅时)
即使 switchIfEmpty
在您调用 getNumber
时被调用方法,Observable
作为 switchIfEmpty
的参数给出只会在你 subscribe
时发出给你的Observable
因此,从本质上讲,只有当源可观察对象为空时才会执行此可观察对象
private Observable<Integer> getNFromCache(){
return Observable.empty;
}
public Observable<Integer> getNumber(){
return getNFromCache(scope)
.switchIfEmpty(this::doHttpRequest);
}
private Observable<Integer> doHttpRequest(){
return Observable.of(1)
.doOnSubscribe(() -> System.out.pritnln("START !"))
}
public static void main(String...args) {
getNumber(); // display nothing => values are not emitted !
getNumber().subscribe(); // display "START !"
}
关于Java Rx Observable 方法 switchIfEmpty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720357/
即使我的流不为空,后备流也总是会被创建?这样做的意图是什么?这是非常不惯用的。 另一方面,.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 具
我是一名优秀的程序员,十分优秀!