Rx java 使用RxJava改造2,同时多次调用相同的服务器api

Rx java 使用RxJava改造2,同时多次调用相同的服务器api,rx-java,retrofit2,Rx Java,Retrofit2,我尝试在RxJava中使用改型2,但我是RxJava和改型的新手 我有一个api,比如: @POST("donSomething") Observable<RespData> doSomeThing(@Body ReqData reqData); @POST(“donSomething”) 可观察剂量测量法(@Body ReqData ReqData); 它可能同时被多次调用 如果我同时多次调用doSomeThing,将创建多少个http请求 如果我只想让它创建一个Http请求(

我尝试在RxJava中使用改型2,但我是RxJava和改型的新手

我有一个api,比如:

@POST("donSomething")
Observable<RespData> doSomeThing(@Body ReqData reqData);
@POST(“donSomething”)
可观察剂量测量法(@Body ReqData ReqData);
它可能同时被多次调用

如果我同时多次调用
doSomeThing
,将创建多少个http请求


如果我只想让它创建一个Http请求(使用RxJava),我该怎么办?

每次您订阅
可观察的
时,都会执行一个Http调用

例如:

             // nothing will happens, you haven't subscribe to your observable
             yourservice.doSomething(request);
如果您订阅了您的
Observable
,则改型将执行http调用:

             // one http call will be performed as soon as the subscribe method is call on your Observable
             yourservice.doSomething(request).subscribe();
每次订阅时将执行一个http调用:

             // do nothing (in term of http call)
             Observable<RespData> obs = yourservice.doSomething(request);

             // first call
             obs.subscribe();

             // second call
             obs.subscribe();
//什么都不做(就http调用而言)
可观测obs=您的服务。剂量测量(请求);
//第一个电话
obs.subscribe();
//第二次呼叫
obs.subscribe();

如果要执行一个http调用而不是多个http调用,则可能需要执行网络调用折叠。如果是这样,您可以查看执行此操作的Hystrix:

每次您订阅
可观察的
时,将执行一个http调用

例如:

             // nothing will happens, you haven't subscribe to your observable
             yourservice.doSomething(request);
如果您订阅了您的
Observable
,则改型将执行http调用:

             // one http call will be performed as soon as the subscribe method is call on your Observable
             yourservice.doSomething(request).subscribe();
每次订阅时将执行一个http调用:

             // do nothing (in term of http call)
             Observable<RespData> obs = yourservice.doSomething(request);

             // first call
             obs.subscribe();

             // second call
             obs.subscribe();
//什么都不做(就http调用而言)
可观测obs=您的服务。剂量测量(请求);
//第一个电话
obs.subscribe();
//第二次呼叫
obs.subscribe();

如果要执行一个http调用而不是多个http调用,则可能需要执行网络调用折叠。如果是这样的话,您可以看看Hystrix,它执行以下操作:

我也对这一点感兴趣。我打赌您需要与代码的多个部分共享该可观察性,并且您不希望多次调用它,除非您明确要求刷新。不是吗?我也对这个感兴趣。我打赌您需要与代码的多个部分共享该可观察性,并且您不希望多次调用它,除非您明确要求刷新。不是吗?Hystrix很有趣,而且正在崩溃。。。但这意味着您可以使用Hystrix。通常情况并非如此。我认为它应该是一个使用RxJava的解决方案(我希望有)。(并且可以用它来做请求折叠)Hystrix很有趣,请求折叠也很有趣。。。但这意味着您可以使用Hystrix。通常情况并非如此。我认为它应该是一个使用RxJava的解决方案(我希望有)。(并可使用它进行请求折叠)