[英]RxJava2 concat() runs only the first Observable
我有3个返回Observable(String)
。 我需要一个接一个地执行此方法。 每种方法大约需要2到3分钟。 我正在使用下一个代码:
Observable.concat(one(),two(),three())
.subscribeWith(new DisposableObserver<String>() {
@Override
public void onNext(String s) {
LOG.debug(s);
}
@Override
public void onError(Throwable e) {
LOG.error(e.toString());
}
@Override
public void onComplete() {
}
});
仅执行第一种方法。 第二和第三种方法被忽略。 我不明白是什么问题? 我正在使用RxJava2版本2.1.6
显然, one()
是一个Observable
,它不会发出onComplete()
事件,这意味着它尚未完成,而concat()
运算符将等到observable发出一个终端事件,然后才从下一个Observable
开始。
如果不具备first observable的创建逻辑,则可以使用Single.fromObservable()
API将Single.fromObservable()
转换为Single
。
Observable.concat(Single.fromObservable(one()), two(), three())
如果您确实有权访问first observable的创建逻辑,则发出终端事件( emitter.onComplete()
)。
正如David Karnok在评论部分中概述的那样:
Single.fromObservable()
还需要一个完整的源,因此,如果该源恰好没有任何项目,它可能会错误提示您。
您是第一个可观察到的完成者,还是仅发出一个物品? 根据文档 ,直到一个完成后,它才会发射两个或三个项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.