我有两个操作:
我知道如何在每个单独的操作中使用rx,但是一旦调用了所有这些操作,我只考虑在其他内部使用nest observable,这将导致回调地狱。
完成这些工作的正确方法是什么?
答案 0 :(得分:1)
根据您的描述,服务器和本地数据库查询应该并行发生,在我们将两个数据组合在一起之后,您需要使用zip运算符。 zip将订阅服务器和本地数据库observable,当两个Observable都发出值时,你将接下来使用服务器和数据库数据,然后将它们组合在zip运算符func中,你将获得发出组合的Observable数据
每次发送组合数据(doOnNext),在后台启动保存操作,并在订户中根据组合数据更新Ui。
Observable<ServerData> getServerData = ...;
Observable<LocalDbData> getLocalDbData = ...;
Observable
.zip(getServerData, getLocalDbData,
(serverData, localDbData) -> combinedData(serverData, localDbData))
.doOnNext(combinedData -> updateDataInDb())
.subscribe(combinedData -> updateUi(combinedData));