Реклама

Среда исполнения JavaScript в браузере по стандарту HTML: агенты, event loop, task'и и микрозадачи

#Среда #JavaScript #HTML #Обычно #Зависшая
Среда исполнения JavaScript в браузере по стандарту HTML: агенты, event loop, task'и и микрозадачи

Обычно браузер представляют так: у каждой вкладки свой поток и свой event loop, а промис срабатывает раньше таймера, потому что микрозадачи приоритетнее макрозадач. На практике этого хватает, но в стандарте HTML всё устроено иначе. Вот три примера: Зависшая вкладка может подвесить соседнюю, например ту, которая открыла её через window.open(). Один и тот же код может выдать разный порядок вывода, и всё зависит от того, кто его вызвал. Слова «макрозадача», которое звучит на каждом собеседовании, в стандарте нет: то, что им называют, - просто обычная task. Разобрать по стандарту

Это продолжение статьи «Модель исполнения JavaScript по спецификации ECMAScript: call stack, контексты, окружения и замыкания». Если ты её не читал, лучше начать с неё: агент, Realm Record, execution context, execution context stack и Job здесь заново не объясняются.

Обычно браузер представляют так: у каждой вкладки свой поток и свой event loop, а промис срабатывает раньше таймера, потому что микрозадачи приоритетнее макрозадач. На практике этого хватает, но в стандарте HTML всё устроено иначе. Вот три примера:

- Зависшая вкладка может подвесить соседнюю, например ту, которая открыла её через window.open() .

- Один и тот же код может выдать разный порядок вывода, и всё зависит от того, кто его вызвал.