gpt4 book ai didi

android - Kotlin 中的 suspend 关键字是否可以在没有协程的情况下执行任何操作?

转载 作者:搜寻专家 更新时间:2023-11-01 09:22:51 25 4
gpt4 key购买 nike

我的理解是,Kotlin 的协程是库,这使得 Kotlin 中并发的唯一语言级特性成为 suspend 关键字。

我仍然在思考 Kotlin 中的协程,但我想知道这对我的问题来说是否有点过头了,我的问题是在 HttpsURLConnection 返回数据后立即更新 TextView 。异常处理使回调变得丑陋到我想尽可能避免那些回调

suspend 关键字是否仅仅意味着运行时可以暂停一个需要一段时间才能完成的函数?还是仅在协程内启用暂停?作为一个假设,我可以写吗

suspend fun getStringFromNetwork(): String {
val request = URL("https:stackoverflow.com").openConnection()
val result = readStream(request.inputStream)
request.disconnect()
return result
}

//and then elsewhere
foo()
val s = getStringFromNetwork()
bar(s)
baz()

并且知道如果 getStringFromNetwork 下载 1 GB 的数据,那么 baz() 将同时被调用,而 bar(s)等待 sgetStringFromNetwork 填充?

最佳答案

“然后在其他地方”部分调用 getStringFromNetwork(),因此它不会在 suspend 函数(包括 suspend lambdas ), 它们只能在协同程序中执行。

that baz() will be called in the meantime, while bar(s) waits for s to be populated by getStringFromNetwork?

不,如果你这样写,baz()只会在bar(s)返回后才开始执行。但是当然 bar(s) 可以启动一个新的协程来完成实际工作。

关于android - Kotlin 中的 suspend 关键字是否可以在没有协程的情况下执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53145650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com