私は Observable で Retrofit を使用しており、Observable を連鎖させたいと考えています。はタスクを実行する Observable を返すため、通常はmap()またはのような関数でうまく機能します。ただし、この場合、次のことを行う必要があります。flatMap()api
- からの getKey()
api - 返されたキーを別のライブラリで使用
Fooし、コールバックが呼び出されるのを待ちます。 - コールバックが戻ったら、結果を に送信します
api。
これを単一の連鎖呼び出しにしたいので、一度登録するだけで済みます。merge()またはjoin()または何かを使用できると思いますが、コールバックを処理するための最良のアプローチが何であるかはわかりませんでした。
これを改善する方法はありますか?これは私がこれまでに持っているものです:
api.getKey().subscribe(new Action1<String>() {
@Override
public void call(String key) {
Foo foo = new Foo();
foo.setAwesomeCallback(new AwesomeCallback() {
@Override
public void onAwesomeReady(String awesome) {
api.sendAwesome(awesome)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
handleAwesomeSent();
}
});
}
});
foo.makeAwesome();
}
});