You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RxJava转RxJava2:repeatWhen相关代码改写求助

在RxJava2中改写repeatWhen的示例代码

嘿,别担心,这个问题其实很容易解决!你提到的asObservable()方法在RxJava2里确实被移除了,但原因很简单——RxJava2中的Subject本身就实现了ObservableSource接口,可以直接当作Observable来使用,不需要额外转换。

修改后的RxJava2代码:

@NonNull private final PublishSubject<Void> updateSubject = PublishSubject.create();
private void load() {
    repository
        .getSomething()
        .repeatWhen(repeatHandler -> repeatHandler.flatMap(nothing -> updateSubject))
        .subscribe(result -> {}, err -> {});
}

关键点说明:

  • 在RxJava2中,PublishSubject继承自Observable(更准确地说,它实现了ObservableSource,而Observable也实现了这个接口),所以你可以直接把updateSubject传递给flatMap,不需要调用asObservable()。
  • repeatWhen的逻辑和原来保持一致:当上游流结束时,repeatHandler会发射一个通知,我们通过flatMap切换到updateSubject,等待它发射事件后重新订阅上游的getSomething()流。

这样改写后,代码就能在RxJava2中正常工作啦!

内容的提问来源于stack exchange,提问作者Serg Burlaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:03:45