Mis*_*ith 0 kotlin kotlin-coroutines
让我们看看这段代码:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferreds: List<Deferred<Int>> = (1..3).map {
async {
delay(50L * it)
it
}
}
val sum = awaitAll(deferreds[0], deferreds[1], deferreds[2]).sum()
println("$sum")
}
Run Code Online (Sandbox Code Playgroud)
上面我们awaitAll用可变参数调用。这是源代码的awaitAll样子:
public suspend fun <T> awaitAll(vararg deferreds: Deferred<T>): List<T> =
if (deferreds.isEmpty()) emptyList() else AwaitAll(deferreds).await()
Run Code Online (Sandbox Code Playgroud)
但显然我们也可以调用awaitAllPromise 列表:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferreds: List<Deferred<Int>> = (1..3).map {
async {
delay(50L * it)
it
}
}
val sum2 = deferreds.awaitAll().sum()
println("$sum2")
}
Run Code Online (Sandbox Code Playgroud)
如果awaitAll不是扩展功能,这怎么可能?
查看kotlinx.coroutines.awaitAll它的源代码,该awaitAll方法既是全局函数又是Collection<Deferred<T>>模板类的扩展方法。
两者都应该工作得一样好并且基本上做相同的事情,这取决于您使用您喜欢的并且最适合您的标准的那个!
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |