Сопрограмма, которая ожидает ввода с таймаутом - PullRequest
0 голосов
/ 28 октября 2019

Я новичок в сопрограммах, и я пытаюсь понять, могу ли я использовать их, чтобы сделать что-то вроде следующего:

  1. начать прослушивание событий (например, ввод с клавиатуры))
  2. если событие приходит, отреагируйте на него (сделайте что-нибудь)
  3. если событие не наступит в течение n секунд, сделайте что-нибудь еще

Я думал, что яможет потребоваться сделать тайм-аут самим событием. Но мне тяжело оборачиваться вокруг этого материала. Простой пример, который выполняет вышеизложенное, был бы очень поучительным.

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете использовать Kotlin 'собственную функцию тайм-аута .

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