如果没有完成可观察的替代方案?

时间:2018-01-29 18:57:13

标签: rx-java rx-java2

我想手动重试一个带有最后一个值的observable。

我知道重试和重复操作符,但是那些afaik仅适用于错误和已完成的可观察数据。我的观察结果永远不会让人忍不住,所以这不起作用。我想问一下除了这种笨拙的设置之外是否还有其他方法

queryObservable
    .donNext(query -> lastQuery = query)
    .mergeWith(repeatTriggerRelay)
    .switchMap(query -> getData_NeverCompletingObservable(query));

void rerun() {
    repeatTriggerRelay.onNext(lastQuery)
}

是否有重播过载()我不知道?感谢

1 个答案:

答案 0 :(得分:2)

BehaviorSubject应该是一个简单的解决方案:

BehaviorSubject<String> querySubject = BehaviorSubject.create();

querySubject
.switchMap(query -> getData_NeverCompletingObservable(query))
.subscribe(/* ... */);

querySubject.onNext("initial query");

void rerun() {
    querySubject.onNext(querySubject.getValue());
}
相关问题