【发布时间】:2019-11-28 01:17:56
【问题描述】:
我需要从 rxkotlin 链启动协程,但我不确定这是对还是错,要从 rx 链启动协程,我使用 runblocking 启动挂起方法
示例
Single.just(someOperation())
.map{
someMethod(it)
}
.flatMap{
startCoroutines(suspend { someOpeartions() } ) // i will be starting the coroutines here
}
协程
fun startCoroutines(suspendingObj : suspend () -> Any){
runBlocking(newFixedThreadPoolContext(1,"Thread")){
suspendingObj.invoke()
}
}
上面的代码是正确的方法还是有其他方法可以实现? 谁能帮我解决这个问题
【问题讨论】:
-
如果协程已经在链中,为什么还需要协程?我想它应该是 rx 或协程。
-
@TentenPonce 这是错误的做法,如果是这样,为什么?
-
rx 已经是异步的了,为什么还要在里面使用协程呢?如果您的目标是更改线程,则 rx
.observeOn()已经支持它。您可以不暂停,而是将其设置为 rx 并将其添加到您当前的链中。 -
阻塞几乎从来都不是一个好的选择,Rx or no Rx。 There exist 可以连接这两种方法的转换器和构建器。例如rxSingle.
标签: android kotlin kotlin-android-extensions kotlin-coroutines