经常性的可观察流

时间:2016-12-13 18:41:06

标签: rx-java system.reactive reactive-programming reactive

我有一个可以在事件上终止的可观察事件流。但是,一旦终止,我需要从一开始就重新开始流。流的表示如下:

awaitStartEvent()
  .switchMap(value -> awaitSecondEvent(value))
  .subscribe(result -> {
    doSomethingWithResult(result);
    // need to start at awaitStartEvent again here
  }, error -> {
    handleError(error);
    // need to start at awaitStartEvent again here
  }

处理这种情况的好方法是什么?

3 个答案:

答案 0 :(得分:0)

根据@ maxost的评论,使用Repeat运算符。如果您希望它继续面对错误,那么您还需要在其中添加Retry运算符。这是您需要将handleError逻辑作为最终订阅才能看到这些错误的地方。

答案 1 :(得分:0)

您需要repeatretry,但由于您在问题中有handleError副作用,因此异常不会传播到下游以由{{处理1}}运算符。

这里使用retry类运算符。

do

答案 2 :(得分:0)

awaitStartEvent()
    .switchMap(value -> awaitSecondEvent(value))
    .doOnNext(result -> doSomethingWithResult(result)) //handle result
    .repeat() //resubsribe when onComplete called
    .doOnError(error -> handleError(error)) //handle error
    .retry() //resubscribe when onError called
    .subscribe();
相关问题