2016-08-02 14 views
1

Retrofit2とRxJavaを使用しようとしていますが、私はRxJavaの初心者です& Retrofit。Retrofit2 with RxJava、同じサーバAPIを何度でも同時に呼び出す

私のようなAPIを持っている:

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

をそして、それは同時に何度も呼び出すことができます。

doSomeThingを何度も同時に呼び出すと、いくつのHTTPリクエストが作成されますか?

RxJavaを使用して1つのHttpリクエストを作成したい場合はどうすればよいですか?

+0

私はこれにも興味があります。私はあなたがコードの複数の部分でその観測値を共有する必要があり、明示的にリフレッシュを要求しない限り、それを何度も呼びたくないと思います。ではない? –

答えて

0

Observableを購読するたびにhttpコールが1回実行されます。例えば

:1つのHTTP呼び出しを使用して、サブスクライブするたびに実行されます

   // one http call will be performed as soon as the subscribe method is call on your Observable 
      yourservice.doSomething(request).subscribe(); 

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

      // first call 
      obs.subscribe(); 

      // second call 
      obs.subscribe(); 
あなた Observableを購読している場合

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

すると、その後レトロフィットは、HTTP呼び出しを実行します

複数の代わりに1つのhttpコールを実行する場合は、ネットワークコールの崩壊を実行することができます。もしそうなら、これを実行するHystrixを見ることができます:https://github.com/Netflix/Hystrix/wiki/How-it-Works#RequestCollapsing

+0

Hystrixは興味深いですが、RequestCollapsingもありますが、これはHystrixを使用できることを意味します。これは通常は当てはまりません。私はそれがRxJavaのソリューションでなければならないと思っています。 –

+0

あなたはRxJavaを使うので、hystrixがこれをどうやって行うのか見ることができます。 (そして、それを使ってリクエストが崩壊するかもしれません) – dwursteisen

関連する問題