Кейс (JavaScript): Проанализируйте порядок вывода для этого кода и объясните поведение event loop и микрозадач —
console.log('start')

13 Ноя в 09:40
9 +9
0
Ответы
1
Вывод: 'start' будет напечатан сразу — синхронно при выполнении скрипта.
Короткое объяснение поведения event loop и микрозадач:
- Сценарий выполняется внутри текущей макрозадачи (task) — весь синхронный код выполняется немедленно. В вашем примере это единственный вызов console.log('start'), поэтому он выводится сразу.
- Микрозадачи (microtasks) — это callbacks от Promise.then, MutationObserver и т.п. Они помещаются в очередь во время выполнения макрозадачи и выполняются только после завершения текущей макрозадачи, но перед следующей макрозадачей и перед перерисовкой.
- Порядок (в браузере), упрощённо:
1\text{1}1 — выполнить весь синхронный код текущей макрозадачи;
2\text{2}2 — выполнить все микрозадачи из очереди (пока очередь не опустеет);
3\text{3}3 — возможная перерисовка/отрисовка;
4\text{4}4 — перейти к следующей макрозадаче (setTimeout, I/O, события и т.д.).
- В Node.js есть дополнительная очередь (например, process.nextTick), которая обычно выполняется раньше других микрозадач.
Если бы в коде были асинхронные вещи (пример для наглядности):
console.log('start')
Promise.resolve().then(() => console.log('micro'))
setTimeout(() => console.log('macrotask'), 0)
console.log('end')
Порядок вывода был бы: 'start', 'end', 'micro', 'macrotask' — потому что микрозадача выполняется после синхронного кода текущей макрозадачи, но до следующей макрозадачи.
13 Ноя в 09:48
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир