在kotlinx.coroutines库中,您可以使用launch(with join)或async(with await)启动新的协同程序.他们之间有什么区别?
我有两个挂起功能:
suspend fun sendData() : Boolean
suspend fun awaitAcknowledge() : Boolean
Run Code Online (Sandbox Code Playgroud)
我想将它们包装在第三个挂起函数中,它们应该在其中并行执行,并且我想通过具有两个返回值来计算最终结果:
suspend fun sendDataAndAwaitAcknowledge() : Boolean {
// TODO execute both in parallel and compare both results
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样写的话,
suspend fun sendDataAndAwaitAcknowledge() : Boolean {
val sendResult = sendData()
val receiveAck = awaitAcknowledge()
}
Run Code Online (Sandbox Code Playgroud)
这些函数将按串行顺序执行,这在我的情况下不起作用。
来自 RxJava,我想实现类似zip操作符的功能:
Single.zip(awaitAcknowledge(), sendData(), {receiveAck, sendResult -> ...})
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点Coroutines?