繁体   English   中英

RxJava2 concat()仅运行第一个Observable

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM