rx-java - 如何在 RxJava 中制作冷单 'hot'

标签 rx-java reactive-programming rx-java2 reactivex

我有一些代码可以发出网络请求并为每个请求返回一个 Single

public Single<Response> getSomeData(String endpoint)    
{
    return Single.fromCallable(makeNewRequest(endpoint));
}

只要调用者实际 subscribes() 到返回的 Single 就有效。然而在某些特定情况下(对于 POST 请求),调用者对结果不感兴趣,并且从不调用 subscribe()

由于 fromCallable() 将执行推迟到订阅时间,这意味着请求实际上不会被执行。

问题:将这个(冷的)Single 转换为热的正确(惯用)方法是什么,以便立即执行网络请求,而不管调用者是否调用 订阅() ?

最佳答案

我会说你需要 publish运算符结合 connect .在此之前,您需要使用 toObservable()Single 转换为 Observable

此外,请注意,如果调用者对实际结果不感兴趣,则可能是 Completable套房更好。您可以使用 toCompletable()

Single 转换为 Completable

关于rx-java - 如何在 RxJava 中制作冷单 'hot',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673009/

相关文章:

rx-java - Rx2blockingFirst() 不起作用

android - 对有延迟的 Rxjava 可观察对象进行单元测试

reactive-programming - RxJS - 如何将 toArray() 与异步 observables 数组一起使用?

javascript - 如何在静态非 Meteor 页面中使用 Tracker.autorun?

java - PublishSubject 在 `onError()` 之后停止发射

rx-java - RxJava 背压和对生产者的调用次数

java - 在 RxJava 中倒带一个 Observable?

java - RxJava 2 & Retrofit 2 顺序独立调用

java - RxJava : OnNext Unsubscribe is not working

java - 如果 RxJava observable 需要很长时间,你如何显示微调器?