使用RxJava进行Retrofit2,同时多次调用同一服务器api

时间:2016-08-02 13:57:25

标签: rx-java retrofit2

我尝试将Retrofit2与RxJava一起使用,但我是RxJava& amp;的新手。改造。

我有一个api:

@POST("donSomething")
Observable<RespData> doSomeThing(@Body ReqData reqData);

可能会同时多次调用它。

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

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

1 个答案:

答案 0 :(得分:0)

每次订阅Observable时,都会执行一次http通话。

例如:

             // nothing will happens, you haven't subscribe to your observable
             yourservice.doSomething(request);

如果您订阅了Observable,则Retrofit将执行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呼叫而不是多个呼叫,则可能需要执行网络呼叫折叠。如果是这样,您可以查看执行此操作的Hystrix:https://github.com/Netflix/Hystrix/wiki/How-it-Works#RequestCollapsing