複数 API を並列で通信させて、結果が全て揃うまで待機して次の処理に進む方法が知りたいです
表題の件を実現するために Android で RxJava を初めて使って処理を書いていますが、並列で通信に行くものの結果を待つことができず、解決策を探しています。
RxJava に詳しい方がいらっしゃいましたら、解決方法を教えていただけませんでしょうか。
よろしくお願いします。
ソースコード
Java
1class GetAllData() { 2 final GetData g1 = new GetData(); 3 final GetData g2 = new GetData(); 4 5 Observabole<Boolean> task1 = Observable.create(new ObservableOnSubscribe() { 6 @Override 7 public void subscribe(ObservableEmitter emitter) throws Exception { 8 g1.async(emitter); 9 } 10 } 11 12 Observabole<Boolean> task2 = Observable.create(new ObservableOnSubscribe() { 13 @Override 14 public void subscribe(ObservableEmitter emitter) throws Exception { 15 g2.async(emitter); 16 } 17 } 18 19 Observable.zip(task1, task2, new BiFunction<Boolean, Boolean, Booelan>() { 20 @Override 21 public Boolean apply(Boolan result1, Boolean result2) throws Exception { 22 log.d("TEST", "complete:"); ← 全ての処理が終わったら呼ばれると思っているが呼ばれない状態です 23 return true; 24 } 25 }).subscribe(); 26} 27 28class GetData { 29 public void async(ObservableEmitter emitter) { 30 this.emitter = emmiter; 31 apiCall(); // 通信してデータを取得したら response() が呼ばれる 32 } 33 34 @Override 35 public response(int code, String data) { 36 if (data == null) { 37 emitter.onError(new Throwable("error")); // 取得失敗 38 } else { 39 emitter.onNext(true); // データ取得成功 40 } 41 } 42 43}
回答1件
あなたの回答
tips
プレビュー