【问题标题】:unresolved reference: GlobalScope.launch in vs code未解决的参考:VS 代码中的 GlobalScope.launch
【发布时间】:2021-06-18 21:39:34
【问题描述】:

我在 Kotlin 中使用协程得到未解决的引用。我不知道如何在 vs 代码上更新 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)
            }
        }
    }
}

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

【问题讨论】:

    标签: kotlin visual-studio-code kotlin-coroutines


    【解决方案1】:

    GlobalScopelaunchdelay 不是 Kotlin 标准库的一部分,它们是 Kotlinx coroutines library 的一部分。

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

    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0")
    }
    

    然后导入这些声明:

    import kotlinx.coroutines.*
    

    附带说明,除非您知道自己在做什么,否则不应使用GlobalScope,而且我猜您现在只是在学习协程,因此您可能希望避免使用它。通常,您应该使用与具有生命周期的某些组件相关联的协程范围。

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

    【讨论】:

    • 你猜对了,我试图了解协程的概念——为什么它有用,为什么没有。我的 VS 代码编辑器只是一个文本编辑器设置(一个 kt 文件和一个 jar 文件)。我不知道在哪里可以找到或如何创建 build.gradle 文件,除非我在 android studio 上开发应用程序(build.gradle 默认存在)。你能帮我解决这个问题吗?珍惜你的时间
    • 如果您想使用依赖项,通常使用构建工具比使用下载的 jars 和手工制作的类路径手动编译更容易。我不熟悉 VS Code,但有时 IDE 会提供内置的构建系统。如果您可以使用 Gradle,您应该能够像使用 Android Studio 一样独立于您使用的 IDE 来设置您的项目(这就是我更喜欢这个选项的原因)。例如,将您的 kotlin 文件放在 src/main/kotlin 下,并在项目的根目录下创建一个新的 build.gradle 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2021-08-17
    • 2016-12-14
    • 2020-05-27
    • 2019-11-16
    • 2021-01-24
    • 2023-03-25
    相关资源
    最近更新 更多