Краткий ответ: НЕТ , но не в javascript. Похоже, что ваше решение - единственный способ не возвращать контроль обратно в окружающую среду.
Это необходимо, если среда не поддерживает события. Вероятно, они также не поддержали бы установленное время ожидания.
settimeout, безусловно, лучший способ, если вы находитесь в управляемой событиями среде, такой как браузер или node.js.
Вы правы. Событие - это просто делегат с немного другой функциональностью. Весь шаблон наблюдателя может быть реализован с помощью делегатов, даже не касаясь ключевого слова event
.
Тогда вас может заинтересовать то, что ключевое слово «event» фактически приносит в таблицу.
Изменить: Вот отличная запись со сравнением кода IL между событиями и делегатами. (Подсказка: почти то же самое).