相关疑难解决方法(0)

Kotlin协同程序中的launch/join和async/await之间有什么区别

kotlinx.coroutines库中,您可以使用launch(with join)或async(with await)启动新的协同程序.他们之间有什么区别?

asynchronous coroutine kotlin kotlin-coroutines

122
推荐指数
6
解决办法
2万
查看次数

在协程中并行运行两个 Kotlin 协程

我有两个挂起功能:

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

android kotlin kotlin-coroutines

21
推荐指数
2
解决办法
9601
查看次数