私は 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();
}
});