У меня есть консольное приложение Go, которое должно обрабатывать события клавиатуры, а также обрабатывать вещи с фиксированным интервалом.
Вот код, который я сейчас делаю для обработки событий
eventloop:
for {
switch ev := termbox.PollEvent(); ev.Type {
case termbox.EventKey:
switch ev.Key {
case termbox.KeyEsc:
Save()
break eventloop
default:
HandleInputKey(ev)
}
case termbox.EventError:
panic(ev.Err)
}
select {
case <-regRefreshTick:
Sync()
case <-terminalCloseSignal:
break eventloop
case <-tick:
Render()
continue
}
}
Но syn c / опросы клавиатуры работают гладко.
Поведение 1 Иногда событие клавиатуры работает как положено, а иногда обработка событий клавиатуры задерживается. Критическим моментом является то, что когда я перемещаю фокус на другие приложения и возвращаюсь к терминалу, события клавиатуры обрабатываются сумасшедшим образом. Дело в том, что когда я обрабатываю 1, обработка событий для 1 не работает, а если я нажимаю 2, он обрабатывает и 1, и 2.
Поведение 2
Обновление через фиксированный интервал с помощью галочки не работает, как ожидалось. Иногда он обрабатывает несколько обновлений одновременно, а иногда не запускает refre sh, хотя я жду долго.
Вопрос
Я просто хочу знать, если код правильная практика и где-то еще есть проблема или если код совершенно не соответствует действительности.