我试图从一个API调用链构造一个observable,但我无法让它工作。我有四个API调用ApiA
,ApiB
,ApiC
和ApiD
返回观察使用RxJavaCallAdapterFactory
。必须先调用ApiA
和ApiB
,然后在两者都执行后调用ApiC和ApiD。在执行了最后两个View之后初始化。我正在使用zip运算符来等待电话完成,我不确定这是要走的路,但我对RxJava
颇为陌生,所以如果还有其他更好的方法,请告诉我。 下面是我的代码注释表示在我被困RxJava使用zip链接多个调用
public Observable syncData() {
return Observable.zip(
// these two calls are executed
callApiA(),
callApiB(),
(o, o2) -> Observable.zip(
/* these two calls are not executed, it seems as if this zip has
no subscriber but i don't know why ... */
callApiC(),
callApiD(),
(o, o2) -> {
someLogic();
return Observable.empty();
}));
}
,并鉴于我只是subsribe这种方法
viewModel.syncData().subscribe(
o -> mainAdapter.update(),
throwable -> throwable.printStackTrace()
);
我又是相当新的RxJava所以任何帮助将不胜感激。谢谢
你确定呼叫没有在主线程上运行吗?你可以在'callApiX()'上添加'.subscribeOn(Schedulers.io())'。你有日志吗? –
所有调用都在Schedulers.io()上,并且没有错误或警告 – TheJudge