我想有重复的可观察对象发出项目,直到某些条件实现。然后调用onComplete并结束。
我以为这样的东西会工作,但我错了:
return Observable.interval(5, TimeUnit.SECONDS)
.flatMap(tick -> {
if (condition) {
return Observable.empty();
}
doSomething();
return Observable.just(null);
});
您可以使用takeUntil
:
return Observable.interval(5, SECONDS)
.takeUntil(conditionObs)
.subscribe(t -> dosomething());
请注意,当条件变为真时,conditionObs
(另一个可观察对象)将不得不发出一些东西。
你可以在这里查看文档:http://reactivex.io/documentation/operators/takeuntil.html