我尝试将Retrofit2与RxJava一起使用,但我是RxJava& amp;的新手。改造。
我有一个api:
@POST("donSomething")
Observable<RespData> doSomeThing(@Body ReqData reqData);
可能会同时多次调用它。
如果我同时多次调用doSomeThing
,将创建多少个http请求?
如果我只想创建一个Http请求(使用RxJava),我该怎么办?
答案 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