我正在使用这种结构来处理多个数据加载响应。问题在于此代码会影响片段的开始时间(大约+2秒)。 iframe
函数被放置在load()
中。 ViewModel
方法调用Fragment#onResume()
方法。如何优化此代码以减少ViewModel#load()
的启动时间?
Fragment
如果我将此函数包装到fun load() {
Single.zip(
apiDataManager1.getSingle().subscribeOnIo().observeOnMain(),
apiDataManager2.getSingle().subscribeOnIo().observeOnMain(),
apiDataManager3.getSingle().subscribeOnIo().observeOnMain(),
Function3<Any, Any, Any, Unit> { _, _, _ ->
// process data
}
)
.subscribeOnIo()
.observeOnMain()
.subscribe()
}
中,则一切正常。我怎么只能用Rx做到这一点?
答案 0 :(得分:0)
尝试以其他方式启动链,指定观察者。不确定是否要这样做,但是可能不应该将Function3中的数据合并到主线程中:
Single.defer(() -> Single.just(true))
.observeOn(Schedulers.io())
.flatMap( any -> Single.zip(
apiDataManager1.getSingle().subscribeOnIo(),
apiDataManager2.getSingle().subscribeOnIo(),
apiDataManager3.getSingle().subscribeOnIo(), { _, _, _ ->
// process data
})).subscribeOnIo()
.observeOnMain()
.subscribe()