如标题,有没有办法在 Kotlin
延迟(例如 1 秒)后调用函数?
原文由 Nguyen Minh Binh 发布,翻译遵循 CC BY-SA 4.0 许可协议
如标题,有没有办法在 Kotlin
延迟(例如 1 秒)后调用函数?
原文由 Nguyen Minh Binh 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用以下功能:
fun <T> delayedAsyncTask(delayMs: Long = 0, task: () -> T): ScheduledFuture<T> {
return Executors
.newSingleThreadScheduledExecutor()
.schedule(Callable<T> { task() }, delayMs, TimeUnit.MILLISECONDS)
}
fun <T> asyncTask(task: () -> T) = delayedAsyncTask(0, task)
这是延迟功能的单元测试。当然,使用返回的未来是可选的。
@Test
fun `delayed task work correctly`() {
val future = delayedAsyncTask(1000) {
"lambda returns hello world"
}
assertEquals(false, future.isDone)
Thread.sleep(1100)
assertEquals(true, future.isDone)
assertEquals("lambda returns hello world", future.get())
}
原文由 broc.seib 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.8k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.4k 阅读
1 回答630 阅读✓ 已解决
您可以使用 时间表
示例(感谢@Nguyen Minh Binh - 在这里找到:http: //jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html )