具有 android 客户端交互的 kotlin 协程
kotlin coroutines with android client side interaction
假设我有一个片段打开另一个片段并等待该片段的回答。
是否可以使用 kotlin 协同程序使代码看起来同步?
意思是这样的?
result = await openFragment()
使用 kotlin 1.3 协程你可以这样做:
val myFragment = async { //Your asynchronous task here }
这将 return 一个 Deferred 对象,如官方文档所述,"a light-weight non-blocking future that represents a promise to provide a result later"。当你想得到这个任务的结果时,这样做:
val result = myFragment.await()
或者,您可以使用异步函数在协程之外启动您的任务。只需像这样定义一个函数:
fun openFragment() = GlobalScope.async {
//Your asynchronous task here
}
然后你可以在协程之外执行此操作:
val myFragment = openFragment()
然后就可以通过await函数和上面一样的方式获取到任务的结果了。这行还是得放在协程里面。
val result = myFragment.await()
假设我有一个片段打开另一个片段并等待该片段的回答。
是否可以使用 kotlin 协同程序使代码看起来同步?
意思是这样的?
result = await openFragment()
使用 kotlin 1.3 协程你可以这样做:
val myFragment = async { //Your asynchronous task here }
这将 return 一个 Deferred 对象,如官方文档所述,"a light-weight non-blocking future that represents a promise to provide a result later"。当你想得到这个任务的结果时,这样做:
val result = myFragment.await()
或者,您可以使用异步函数在协程之外启动您的任务。只需像这样定义一个函数:
fun openFragment() = GlobalScope.async {
//Your asynchronous task here
}
然后你可以在协程之外执行此操作:
val myFragment = openFragment()
然后就可以通过await函数和上面一样的方式获取到任务的结果了。这行还是得放在协程里面。
val result = myFragment.await()