假设我有一个片段打开另一个片段并等待该片段的回答。
kotlin 协程是否可以使代码看起来同步?
意思是这样的?
result = await openFragment()
假设我有一个片段打开另一个片段并等待该片段的回答。
kotlin 协程是否可以使代码看起来同步?
意思是这样的?
result = await openFragment()
使用 kotlin 1.3 协程,您可以这样做:
val myFragment = async { //Your asynchronous task here }
这将返回一个 Deferred 对象,正如官方文档所描述的,“一个轻量级的非阻塞未来,代表了稍后提供结果的承诺”。当您想获得此任务的结果时,请执行以下操作:
val result = myFragment.await()
或者,您可以使用异步风格的函数在协程之外启动您的任务。只需定义一个这样的函数:
fun openFragment() = GlobalScope.async {
//Your asynchronous task here
}
然后您可以在协程之外执行此操作:
val myFragment = openFragment()
然后就可以通过 await 函数以与上面相同的方式得到任务的结果。这条线仍然必须放在协程中。
val result = myFragment.await()