RxJava Observable.Interval 结束发射

RxJava Observable.Interval end emitting

我想要有重复的可观察对象,它会在某些条件成立之前发出项目。然后它调用 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