未解决的参考:VS Code 中的 GlobalScope.launch

Ron*_*nie 1 kotlin visual-studio-code kotlin-coroutines

我收到了在 Kotlin 中使用协程的未解决的参考资料。我不知道如何更新 vs code 上的 build.gradle 文件。我是否必须导入一些扩展或路径?这是下面的代码

import kotlin.coroutines.*

fun main() {
    val states = arrayOf("Starting", "Doing Task 1", "Doing Task 2", "Ending")
    repeat(3) {
        GlobalScope.launch {
            println("${Thread.currentThread()} has started")
            for(i in states) {
                println("${Thread.currentThread()} - $i")
                delay(5000)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出给出了有关 GlobalScope.launch() 和 delay() 的未解决的参考

Jof*_*rey 6

GlobalScopelaunch并且delay不属于 Kotlin 标准库的一部分,它们是Kotlinx 协程库的一部分。

要使用它们,您需要将协程库添加到您的 build.gradle(.kts) 中:

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0")
}
Run Code Online (Sandbox Code Playgroud)

然后导入这些声明:

import kotlinx.coroutines.*
Run Code Online (Sandbox Code Playgroud)

作为旁注,GlobalScope除非您知道自己在做什么,否则不应该使用它,而且我猜您现在刚刚学习协程,因此您可能希望避免使用它。一般来说,您应该使用与某个具有生命周期的组件绑定的协程作用域。

在这种情况下,您可能希望runBlocking { ... } 在 main 方法的主体周围使用,这将在您等待协程时阻塞主线程。