Kotlin延迟后如何调用函数?

新手上路,请多包涵

如标题,有没有办法在 Kotlin 延迟(例如 1 秒)后调用函数?

原文由 Nguyen Minh Binh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
2 个回答

我使用以下功能:

 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题