我有一些像这样的代码:
Set<Something> set = HashSet<>();
// [...]
return Observable.mergeDelayError(
Observable.from(set)
.map(something -> process(something)))
.take(1);
根据文件:
mergeDelayError:将发出Observable的Observable展平 一个Observable,允许观察者接收全部 无需成功从所有源Observable中发出项目 被其中一个人的错误通知打断。
到目前为止,我明白了。 我的问题是关于方法take():它会等待所有Observable在获取第一个结果之前返回一些东西,还是会从第一个完成的Observable获取第一个结果?
TIA,
答案 0 :(得分:1)
在获取第一个结果之前,是否会等待所有Observable返回一些内容
那是对的
<强> UPD 强>
根据该测试,它返回第一个发射项目
Observable.mergeDelayError(
Observable.just(null)
.doOnNext(x -> {
throw new RuntimeException();
}),
Observable.just(1).delay(70, TimeUnit.MILLISECONDS),
Observable.just(2).delay(50, TimeUnit.MILLISECONDS))
.take(1)
.subscribe(System.out::print);