为什么RxJava如果在条件之后添加,将不会执行第三个可完成的(completable3
)?
我注意到这不是链条似乎被打破的唯一情况,所以我想知道以下代码未按预期执行的根本原因。
Completable chain = completable1
.andThen(completable2);
if(condition)
chain.andThen(completable3);
chain.subscribe();
我知道我可以这样做:
completable1
.andThen(completable2);
.andThen(Completable.defer(() => {
if(condition)
return completable3;
else
return Completable.complete();
}))
.subscribe();
答案 0 :(得分:1)
RxJava中的运算符返回一个您应该继续编写的新实例,因此,忽略返回的Completable
结果为no-op。你在第二个例子中做了正确的事。对于第一个示例,您可以使用andThen
返回的已调制实例替换链引用:
Completable chain = completable1
.andThen(completable2);
if (condition) {
chain = chain.andThen(completable3);
}
chain.subscribe();