gpt4 book ai didi

kotlin - Kotlin是否具有与Swift的 “DispatchWorkItem”完全相同的功能?

转载 作者:行者123 更新时间:2023-12-02 13:36:52 26 4
gpt4 key购买 nike

我想在超时或满足某些特定条件后执行特定功能。我已经使用DispatchWorkItem快速完成了相同的工作并使用了

dispatchQueue?.asyncAfter(deadline: .now() + .seconds(10), execute: self.dispatchWorkItemForDevicesDiscovery!) 

启动计时器,并在10秒钟后执行关联的disptachWorkItem。

如何在Kotlin中做到这一点?

最佳答案

您可以为此使用Kotlin的协程。您可以创建自己的暂停功能,该功能可以在任意数量的时间x内检查给定条件。

suspend fun startConditionally(checkDelayMillis: Long = 10, condition: () -> Boolean, block: () -> Unit) {
while (true) {
if (condition()) { break }
delay(checkDelayMillis)
}

block()
}


fun main() {
var i = 0

// make the condition be fullfilled after 1 sec.
GlobalScope.launch {
delay(1000)
i = 1
}

GlobalScope.launch {
startConditionally(condition = {
i == 1
}) {
println("Hello")
}
}

Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}

您将需要添加依赖项,因为协程不属于标准库。

这是您需要放入pom.xml(对于Maven)的内容:
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>1.1.0</version>
</dependency>

另外,您需要激活它们:
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
...
<configuration>
<args>
<arg>-Xcoroutines=enable</arg>
</args>
</configuration>
</plugin>

Further reading

关于kotlin - Kotlin是否具有与Swift的 “DispatchWorkItem”完全相同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54298541/

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