Kotlin 如何使用计时器安排任务

Kotlin 如何使用计时器安排任务,kotlin,Kotlin,如何安排每2秒检查一次值是否为真的任务?我正在这样做: suspend fun a() { while(true) { if(isReady()) { break } delay(2000) } doWork() } 我觉得应该有一种更惯用的方法来做这件事。我无法更改isReady(),因此无法进行回调 希望使用协同程序。而且,TimerTask过去给我带来了不同设备的问题。更惯用的方式是 while(!isReady(

如何安排每2秒检查一次值是否为真的任务?我正在这样做:

suspend fun a() {
   while(true) {
      if(isReady()) {
          break
      }
      delay(2000)
   }
   doWork()
}
我觉得应该有一种更惯用的方法来做这件事。我无法更改
isReady()
,因此无法进行回调


希望使用协同程序。而且,
TimerTask
过去给我带来了不同设备的问题。

更惯用的方式是

while(!isReady()) {
    delay(2000)
}
doWork()
(如果您愿意,也可以将
while
块粘贴在一行上,这也是惯用的用法)


但除此之外,这几乎是使用协程的基本情况,与在线程上运行简单任务的方式相同(在设置标志之前睡眠)。您需要更复杂的东西吗?

但它使用线程。我想使用协同程序。您当前的代码有什么问题?我觉得不错
isReady()
可能需要与实现它的任何东西同步。