Rx java 如果未完成“可观察”选项,则何时重复?
我想手动重试发出最后一个值的可观测值。 我知道retry和repeat操作符,但是那些afaik只对出错和已完成的观测值起作用。我的可观察性永远不会结束,所以这不起作用。我想问一下,除了这个古怪的设置,还有没有别的办法Rx java 如果未完成“可观察”选项,则何时重复?,rx-java,rx-java2,Rx Java,Rx Java2,我想手动重试发出最后一个值的可观测值。 我知道retry和repeat操作符,但是那些afaik只对出错和已完成的观测值起作用。我的可观察性永远不会结束,所以这不起作用。我想问一下,除了这个古怪的设置,还有没有别的办法 queryObservable .donNext(query -> lastQuery = query) .mergeWith(repeatTriggerRelay) .switchMap(query -> getData_NeverCompl
queryObservable
.donNext(query -> lastQuery = query)
.mergeWith(repeatTriggerRelay)
.switchMap(query -> getData_NeverCompletingObservable(query));
void rerun() {
repeatTriggerRelay.onNext(lastQuery)
}
我不知道可能有过多的重播吗?谢谢
行为主题
应该是一个简单的解决方案:
BehaviorSubject<String> querySubject = BehaviorSubject.create();
querySubject
.switchMap(query -> getData_NeverCompletingObservable(query))
.subscribe(/* ... */);
querySubject.onNext("initial query");
void rerun() {
querySubject.onNext(querySubject.getValue());
}
BehaviorSubject querySubject=BehaviorSubject.create();
查询主体
.switchMap(查询->获取数据\u从不完成可观察(查询))
.认购(/*…*/);
querySubject.onNext(“初始查询”);
无效重新运行(){
onNext(querySubject.getValue());
}
也许只使用行为主题
,通过onNext
发出新查询的信号,并通过onNext(subject.getValue())
发出重试的信号?好的,这会起作用,但在我的脑海中仍然有点僵硬。像replayWhen()这样的方法重新订阅上游将更加优雅,因为您现在是维护者和一切:)。感谢两件事:1)命名一个不存在的操作符不会神奇地让它出现;2) 我们通常会对自定义运算符的上下文和生命周期进行更多的考虑,这超出了人们发布的基本期望。我知道,这只是开玩笑而已。