采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
suspend函数只要不是用来当作协程本体(即:被转为SuspendLambda类型),都要手动写“continuation.resume” ?
suspend fun test() = suspendCoroutine<String> {continuation -> continuation.resume("world") }
不,你可以用来调用其他suspend函数
我不知道您说的“调用”是什么意思,如果是直接调用编辑器会报错:"suspension functions can be called only within coroutine body"。只能把其他挂起函数当作返回值(个人认为属于一种传递),如下: suspend fun demo(): String{ return demo2() }
--- 原问题 suspend函数只要不是用来当作协程本体(即:被转为SuspendLambda类型),都要手动写“continuation.resume” ? ---- 我再重说一下 不是的,suspend函数即便不是用来当作协程本体(即:被转为SuspendLambda类型),也不一定手动写“continuation.resume”,因为可以用来调用其他 suspend 函数。 看看这下能不能明白? 至于你的回复,你可能有什么误解。suspend 函数只能在 suspend 函数当中调用,因此不能直接在普通函数当中调用,这个能理解吧,但谁说就必须一定要作为返回值了呢? suspend fun demo(): String{ demo2() return "Hello World" } 有什么问题么?
我弄错了。我发现我的挂起函数里面是这样的 suspend fun demo(): String{ SuspendCoroutine{ c -> demo2() } return "Hello World" } 所以报的错。
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.5k 4
1.5k 1
366 1
149 20
1.3k 16