等待输入超时的协程

Coroutine that waits for input with timeout

我是协程的新手,我正在尝试理解 if/how 我可以利用它们来执行以下操作:

  1. 开始监听事件(例如,键盘输入)
  2. 如果事件到来,对其做出反应(做某事)
  3. 如果 n 秒内没有事件到达,则执行其他操作

我在想我可能需要让超时本身成为一个事件。但是我很难理解这些东西。执行上述操作的一个简单示例将非常有启发性。

您可以使用 Kotlin' own timeout functionality.

val result = withTimeoutOrNull(timeoutInMillis) {
    var event = getKeybouardEvent()
    while(event == null) {
        event = getKeybouardEvent()
     }
    return event
}
if(result == null) doThis() else doThat()