这个地方我觉得没讲清楚,suspend 这个到底是啥。。

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

xxxxjase普通

2020-08-23

suspend { 
}.createCoroutine(object: Continuation<Unit>{
    override val context = EmptyCoroutineContext

    override fun resumeWith(result: Result<Unit>) {
        log("Coroutine End with $result")
    }
}).resume(Unit) 

createCoroutine 是创建一个协程,返回的是 Continuation,resume 应该走的这个协程的逻辑。

然后他执行完成后,resume 传入的 object 的逻辑。

那么,问题来了:

suspend {…} 这货到底是在干啥??,demo 里面也没有说明,就是空实现。。。。

写回答

3回答

bennyhuo

2020-08-24

ppt里面不是有省略号么,怎么会是什么都没有呢。

0
0

xxxxjase普通

提问者

2020-08-23

关键是 suspend {} 里面什么都没有,他用来干啥的,这个难道不是问题?

0
6
bennyhuo
不是的,是你太着急啦,慢慢多看看自己动手写写就好啦
2020-08-24
共6条回复

bennyhuo

2020-08-23

suspend {} 会在编译后生成一个 SuspendLambda 的子类实例,视频肯定讲了,多看几遍

0
1
xxxxjase普通
suspend { }.startCoroutine(object: Continuation{ override val context = EmptyCoroutineContext override fun resumeWith(result: Result) { log("Coroutine End with $result") } }) 我觉得这里的 suspend {} 其实没啥用,就是创建了一个初始的协程对象。。。
2020-08-24
共1条回复

学会Kotlin 突破开发语言瓶颈

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

1760 学习 · 481 问题

查看课程