私は非反応コードをReactive Codeと橋渡しするシナリオを持っています。反復可能な終了からの終了成功した応答で観察可能
以下のシナリオを考えてください。
私はArrayList
に3つのURLのリストを持っています。 ArrayList
の中にある順に各URLに電話したいと思います。私は一度に1つのURLしか呼び出すことができません。最初のURLが応答を返す場合は、onComplete()
に電話し、残りのURLを実行しないでください。ただし、応答がエラーの場合は、リスト内の次のURLを実行します。 私は、RxJavaが前のURLに対してエラー応答を受け取らない限り、flatMap
を次のURLに呼び出さないようにします。 RxJavaの私の原始的な理解のため、私はこれを達成する方法を理解できませんでした。私はこのような何かを計画し何
:
Observable.fromIteratable(urlList)
.subscribeOn(Schedulars.io())
.flatMap(new Func(String url, String data) {
SomeNetworkLibrary.getData(url)
.OnResponse(new NewResponse() {
public void onSuccess(String dataFromInternet) {return dataFromInternet;}
public void onError(String errorMessage) {return errorMessage;)
})
// wait until we have response from the network call above and then return
// I don't know what will be the cleanest and efficient way of waiting here.
});
TLDRを。
flatMap()
からの結果が返される前にflatMap()
を呼び出すことは望ましくありません。
どうすればいいですか?