如何通过翻新来管理不同类型数据的多个请求

时间:2018-07-18 16:53:26

标签: retrofit2 rx-java2 rx-android

Api.service().random3Products()
            .flatMap {
                Log.v(TAG, "flatMap1 ${Thread.currentThread().name}")
//              Do some ui works
                return@flatMap Api.service().getMenuListRx()
            }
            .flatMap { menuList ->
                // Do some ui works
                Log.v(TAG, "flatMap2 ${Thread.currentThread().name}")
                return@flatMap Observable.concatEager(List(menuList.menus.size){
                    Api.service().randomTenProductsByCategoryId(menuList.menus[it].menuId)
                })
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe{
                // Also do some ui works
                Log.v(TAG, "subscribe ${Thread.currentThread().name}")
            }

这是我的代码。我想在flatMap中处理一些ui工作,并且在ui工作结束后返回一个可观察到的发送下一个请求。但是问题是 NetworkOnMainThreadException 只有创建视图层次结构的原始线程才能触摸其视图。如何使代码正常工作。

0 个答案:

没有答案