質問: ReactiveXで非同期通信の直列化と結果の合成をどうやるか、教えてほしいです。 1. apiAを叩く 2. apiAが成功したらapiAの結果をparameterとしてapiBを叩く 3. apiBが成功したらapiAとapiBの結果をparameterとしてapiCを叩く rxswiftを使っていますが、概念としては同じだと思うので特定の言語はタグ指定していません。 現在下記のように各種非同期通信をObservableで返すfunctionが実装されています。 それらをどう利用するかを教えてほしいです ``` func requestApiA() -> Observable { /* 略 */ } func requestApiB(parameterA: ResponseA) -> Observable { /* 略 */ } func requestApiC(parameterA: ResponseA, parameterB: ResponseB) -> Observable { /* 略 */ } ```
回答: 各Observableが1回のみ結果を返すものとして回答します。 ``` let request = requestApiA().flatMap { resA in requestApiB(parameterA: resA).flatMap { resB in requestApiC(parameterA: resA, parameterB: resB) } } ``` こうしてObservableを組み立てればOKです。 あとはsubscribeするなりすれば実行されます。 ``` request.subscribe(...) ```