suspendCoroutine里Continuation到底指哪个Continuation?

来源:11-6 Kotlin 协程的基本要素2

慕姐0483322

2024-03-25

老师,有个协程的问题想请教下,在11-6视频这里
图片描述
这里的it指的是createCoroutine之后返回的Continuation,还是传进去的complete的那个Continuation

因为我发现11-5里面讲到将回调转写成挂起函数里的suspendCoroutine里Continuation是传进去的complete的那个Continuation
图片描述

目前听11-6的视频 ,听老师讲的意思 ,这里的it指的是createCoroutine之后返回的Continuation,这里就有点疑惑了,请老师有空解答下。

写回答

1回答

bennyhuo

2024-03-25

startCoroutine的参数completion是协程执行完的回调,创建时返回的continuation是协程自身的continuation,问题里面提到的it是创建时返回的这个,不是那个completion哈。
0
2
bennyhuo
回复
慕姐0483322
抱歉同学,最近刚换工作比较忙,刚看到回复。fun foo(continuation:Continuation):Any{} 这个函数要在协程内部调用,传入的这个 continuation 就是协程本体,而不是 completion。在 foo 执行完之后,如果是同步执行,那就直接返回了;如果是异步执行,就要使用这个 continuation 来告诉所在的协程该继续往下执行了。 请注意!一个协程涉及到的两个 continuation 实例,即协程体(start 的时候返回的那个)和完成回调(即 completion,start 的时候传入的那个),分别用于不同的目的。协程体在协程执行时用到,协程内部调用任何挂起函数时传入的都是这个实例;完成回调只有在协程执行完成才会用到,用于通知创建协程的外部调用者这个协程执行完了。
2024-04-09
共2条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程