【发布时间】:2019-03-19 01:35:43
【问题描述】:
我有两个网络请求。
fun getPostDetail(postId: Int): Single<Post>
fun getComments(postId: Int): Single<List<Post>>
我想做的是……
- 启动时显示加载屏幕。这两个请求应该独立工作。
- 每个请求完成后,显示的结果都会更新。
- 当所有请求终止时隐藏加载屏幕。
我有处理加载页面的函数:
fun showLoadingScreen()
fun hideLoadingScreen()
并操作视图:
fun showPostDetails(post)
fun showComments(comments)
我已经尝试过这种方式 - 订阅每个,也订阅合并的一个:
postDetail = getPostDetail(postId)
getComments = getComments(postId)
postDetail.subscribe()
getComments.subscribe()
Single.merge(postDetail, getComments).subscribe()
在这种情况下,它发出多个请求而不是一次。
解决此类问题的最佳方法是什么?我可以使用CountDownLatch 来计算每个请求的完成情况,但是在 RxJava 中还有其他下降解决方案吗?
【问题讨论】:
-
为什么不直接使用合并并删除每个独立的订阅?