我有一些代码可以发出网络请求并为每个请求返回一个 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/