我正在使用带有 Observables 的 Retrofit,并且想链接 observables。通常它与map()
or之类的函数配合得很好flatMap()
,因为它会api
返回一个完成任务的 Observable。但在这种情况下,我必须执行以下操作:
- getKey() 从
api
- 在另一个库中使用返回的密钥
Foo
并等待回调被调用。 - 当回调返回时,将结果发送到
api
.
我希望这是一个单链调用,这样我只需要订阅一次。我猜我可以使用merge()
orjoin()
或其他东西,但不确定处理回调的最佳方法是什么。
有没有办法让它变得更好?这是我到目前为止所拥有的:
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();
}
});