Многие асинхронные операции в Vert.x принимают Handler<T>
в качестве последнего аргумента. vertx.setTimer()
- одна из таких асинхронных функций, она вызывает handler
при срабатывании таймера. Согласно документам Vertx.setTimer()
метода он принимает handler: Handler<Long>
в качестве второго параметра. Мы можем заключить, что generi c тип Handler<T>
равен Long
.
Suspend function awaitEvent
принимает лямбда-блок в качестве параметра, который, в свою очередь, получает параметр типа Handler<T>
. Согласно docs :
Блок выполняется с аргументом Handler<T>
, который должен вызываться один раз. Когда вызывается обработчик, awaitEvent
возвращает значение, полученное обработчиком.
Таким образом, при передаче handler
функции vertx.setTimer(1000, handler)
он вызывает handler
после задержки (1000 миллисекунд) истекло, а функция awaitEvent
, в свою очередь, возвращает значение, полученное обработчиком (идентификатор таймера).