Rx java 如果未完成“可观察”选项,则何时重复?

Rx java 如果未完成“可观察”选项,则何时重复?,rx-java,rx-java2,Rx Java,Rx Java2,我想手动重试发出最后一个值的可观测值。 我知道retry和repeat操作符,但是那些afaik只对出错和已完成的观测值起作用。我的可观察性永远不会结束,所以这不起作用。我想问一下,除了这个古怪的设置,还有没有别的办法 queryObservable .donNext(query -> lastQuery = query) .mergeWith(repeatTriggerRelay) .switchMap(query -> getData_NeverCompl

我想手动重试发出最后一个值的可观测值。

我知道retry和repeat操作符,但是那些afaik只对出错和已完成的观测值起作用。我的可观察性永远不会结束,所以这不起作用。我想问一下,除了这个古怪的设置,还有没有别的办法

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) 我们通常会对自定义运算符的上下文和生命周期进行更多的考虑,这超出了人们发布的基本期望。我知道,这只是开玩笑而已。