我有一个可以在事件上终止的可观察事件流。但是,一旦终止,我需要从一开始就重新开始流。流的表示如下:
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
}
处理这种情况的好方法是什么?
答案 0 :(得分:0)
根据@ maxost的评论,使用Repeat
运算符。如果您希望它继续面对错误,那么您还需要在其中添加Retry
运算符。这是您需要将handleError
逻辑作为最终订阅才能看到这些错误的地方。
答案 1 :(得分:0)
您需要repeat
和retry
,但由于您在问题中有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();