Обработка событий в браузере JS

Сейчас я немного запутался с событиями в браузере. Я все еще не уверен, как цикл событий начинает работать. Например, когда я отправляю пользовательское событие в середине какой-либо функции, начинается ли обработка события сразу или она перемещается в очередь событий? А как насчет других событий? Если я нажимаю или страница загружается, что происходит? Когда начинается процесс обработки событий?

1 ответ

Решение

Я все еще не уверен, как цикл событий начинает работать.

Обычно в браузерах он начинает работать, как только вы заходите на страницу, и перестает работать, когда вы выходите с нее.

Например, когда я отправляю пользовательское событие в середине какой-либо функции, начинается ли обработка события сразу или она перемещается в очередь событий?

Существуют синхронные события (которые запускаются сразу) и асинхронные события, которые запускаются в следующей итерации. Ваш код обычно запускается до конца своего выполнения, прежде чем что - либо еще будет запущено, если вы явно не прекратите его.

Пользовательские события DOM обычно синхронны. То есть вы их запускаете, и это происходит сразу же.

Например, если у вас работает код и "click" событие происходит или таймер установлен с setTimeout когда ваш код будет запущен первым - ничто не "прерывает" ваш код.

Когда начинается процесс обработки событий?

Как указано:

События могут отправляться либо синхронно, либо асинхронно.

Синхронные события (события синхронизации) должны обрабатываться так, как если бы они находились в виртуальной очереди в модели "первым пришел - первым обслужен", упорядочены по последовательности временных событий относительно других событий, изменений в DOM и взаимодействие с пользователем. Каждое событие в этой виртуальной очереди должно быть отложено до тех пор, пока предыдущее событие не завершит свое поведение распространения или не будет отменено. Некоторые события синхронизации управляются определенным устройством или процессом, например событиями кнопки мыши. Эти события регулируются алгоритмами порядка событий, определенными для этого набора событий, и пользовательский агент должен отправлять эти события в определенном порядке.

Другие вопросы по тегам