Когда следишь не за ивентами, а своим состоянием каким то
опять-таки. Ты свое состояние как-то же будешь изменять. Что-то должно произойти, чтобы твое состояние изменилось. Это опять таймер/скролл и т.д.
Вот, например, если ты про EventEmitter в ноде, у которого можно подписаться на изменения или сделать emit события, так там это вынужденная мера.
А браузерный API настолько богат, что за нас уже сделали миллион всего