关于挂起函数的问题

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

不是蠢名字

2020-05-18

suspend {
    test1()
}.startCoroutine(object : Continuation<Unit> {
    override val context: CoroutineContext = EmptyCoroutineContext

    override fun resumeWith(result: Result<Unit>) {
    }

})
suspend fun test1() {
    test2()
}

suspend fun test2(): Int = suspendCoroutine<Int> {
    thread {
        it.resume(3)
    }
}```
老师好,如果像我这么写test2中的it指的是哪个continuation,能跟我说说里面continuation的关系吗,感觉有点乱了。还有就是能看到给我们生成的那个SuspendLambda类吗,如果能看应该怎么看
写回答

3回答

bennyhuo

2020-05-18

我看了下你之前也提过类似的问题,你在本节提的上一个问题里面我把Java代码模拟协程的逻辑的源码上传了,不知道同学有没有看到?

0
2
bennyhuo
回复
不是蠢名字
还是那个suspendlambda
2020-05-19
共2条回复

bennyhuo

2020-05-18

挂起函数有个隐含的参数就是continuation,test2的 it 来自于 test1, test1的又来自于调用它的协程,想要看的话可以看下字节码,不过字节码看起来比较晦涩,建议同学重点看下视频当中我用 java 代码模拟 kotlin协程的那几页ppt来理解一下

0
0

bennyhuo

2020-05-18

continuation的关系视频里面有呀,同学是对视频里面的这块不理解吗?

0
0

学会Kotlin 突破开发语言瓶颈

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

1760 学习 · 481 问题

查看课程