我有两个网络请求。
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中还有其他解决方案吗?
答案 0 :(得分:1)
您可以尝试使用doOnSuccess
postDetail = getPostDetail(postId).doOnSuccess { showPostDetails(it) }
getComments = getComments(postId).doOnSuccess { showComments(it) }
然后将它们合并
Single.merge(postDetail, getComments)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe {
showLoadingScreen()
}
.doOnTerminate {
hideLoadingScreen()
}
.subscribe()