我对 Observable.zip 函数有点“审美”问题。你像这样使用它:
Observerbale.zip(
reqA, reqB, reqC,
(a, b, c) -> {/*deal with them*/});
请求的数量等于“deal-with-it”函数中的参数数量。现在,如果你有更多的请求,比如 6 个,你最终会得到一个函数,它需要 6 个参数(假设它们都有不同的类型)。就是感觉不干净。有没有办法将它们包装在一个类中,例如属性?
我现在的现实问题是,我使用 zip 来加载设置数据:
Observable.zip(
loadAPIMenus(), //1.
databaseService.readFavorites(), //2.
(menuResponse, favorites) -> loadFavorites(menuResponse, favorites)) //3.
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
menus -> menuSubscriber.onNext(menus), //4.
error -> menuSubscriber.onError(error));
- 从 rest api 加载列表视图的项目
- 加载这些项目的 id,这些项目作为收藏夹存储在 db 中
- 合并两个列表,因此最喜欢的项目将 isFavorite > 设置为 true
- 更新列表视图
现在没那么糟糕了。但是我想在#3 处添加 2-3 个对其他数据结束函数的请求,这将增长到具有太多函数参数的 4 行猛犸象。
我想,我可以使用嵌套的 Observable.zip,但可能很危险。有没有更优雅的方式来包装这些参数?
我很高兴看到你的建议。