不同之处在于, launch返回一个任务Job对象, 不带任何结果值;而async返回一个延迟任务对象Deferred,一种轻量级的非阻塞性future, 它表示后面会提供结果。...,而不阻塞线程;如果延迟任务完成, 则返回结果值或引发相应的异常。...我们可以从该序列中取出任何有限的数字列表,例如
println(fibonacci.take(16).toList())
的结果是:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55,...关于协程工作原理的更多细节可以在这个设计文档中找到:https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md...底层 API:kotlin.coroutines
底层 API 相对较小,并且除了创建更高级的库之外,不应该使用它。