gpt4 book ai didi

java - RxJava2 concat() 只运行第一个 Observable

转载 作者:行者123 更新时间:2023-11-29 06:50:58 26 4
gpt4 key购买 nike

我有 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。

如果您不具备第一个 observable 的创建逻辑,您可以使用 Single.fromObservable() 将 observable 转换为 Single API。

Observable.concat(Single.fromObservable(one()), two(), three())

如果您确实有权访问第一个可观察对象的创建逻辑,则发出一个终端事件(即 emitter.onComplete())。


正如 David Karnok 在评论部分概述的那样:

Single.fromObservable() also requires a completing source so it can error you if that source happens to have no items.

关于java - RxJava2 concat() 只运行第一个 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48281072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com