我有这个顺序的网络通话功能
private fun fetchData() {
disposables.add(primaryMenuFetcher.getMenu()
.observeOn(uiScheduler)
.flatMap { menuItems ->
primaryMenu = menuItems
onView {
setPrimaryMenuList(primaryMenu)
}
return@flatMap service.getPromotions()
}
.observeOn(uiScheduler)
.subscribe({ fetchedLeagues ->
featuredLeagues = fetchedLeagues
onView {
showPopularLeagues()
setPopularLeaguesList(featuredLeagues)
hideProgressBar()
}
}, {
onView {
showError()
hideProgressBar()
}
}))
}
只要primaryMenuFetcher.getMenu()
没有任何错误,一切就可以正常工作。我想实现的是,如果出现错误,将基本上被跳过,而将调用service.getPromotions()
而不是制动整个链条
我不知道我如何无法自己解决这个问题。我只需要使用.onErrorResumeNext
有效的解决方案是
private fun fetchData() {
disposables.add(primaryMenuFetcher.getMenu()
.observeOn(uiScheduler)
.flatMap { menuItems ->
primaryMenu = menuItems
onView {
setPrimaryMenuList(primaryMenu)
}
return@flatMap service.getPromotions()
}
.onErrorResumeNext { return@onErrorResumeNext service.getPromotions() }
.observeOn(uiScheduler)
.subscribe({ fetchedLeagues ->
featuredLeagues = fetchedLeagues
onView {
showPopularLeagues()
setPopularLeaguesList(featuredLeagues)
hideProgressBar()
}
}, {
onView {
showError()
hideProgressBar()
}
}))
}