RetrofitでAPIを呼び出すためにRxを使用しています。ある時点で私はAPIを呼び出し、レスポンス1を待ってからメタデータを抽出し、レスポンス2を待ってAPIを再度呼び出す必要があります。レスポンス2を受け取った後、私はObservableを発行することができます。私の問題は、どのようにするかわからない: 2を呼び出して、応答2を出した後でのみ発信するEmit 2番目のObservableが受信された後にのみ観測可能
ここは、Observableモデルを出すべきクラスの私の関数です。メソッドget2は、外界では可視である必要はありません。代わりにmap
使用flatMap
の
public Observable<Model> get1(String slug) {
return api1
.getInfo(slug)
.subscribeOn(Schedulers.io())
.map(resonse1 -> {
String metadata = response1.getMetadata();
//Make call2 with metadata
//call(2)
Model model = response1.getModel();
model.setInfo(/*Info from call2*/)
return model;
})
.observeOn(AndroidSchedulers.mainThread());
}
private Observable<Info> get2(String metadata) {
return api2.getInfo(new InfoAsset(metadata))
.subscribeOn(Schedulers.io())
.map(response2 -> {
return response2.getInfo;
})
.observeOn(AndroidSchedulers.mainThread());
}