Что выведет код Middle Event loop обновлено
Микрозадача между двумя таймерами
Вопрос
Что выведет код? По строке на каждый вывод.
setTimeout(() => console.log('t-10'), 10);
setTimeout(() => {
console.log('t-0');
queueMicrotask(() => console.log('micro из таймера'));
}, 0);
setTimeout(() => console.log('t-0 второй'), 0);
console.log('sync');
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: sync, t-0, micro из таймера, t-0 второй, t-10. Сначала синхронный sync.
Что выведет
sync
t-0
micro из таймера
t-0 второй
t-10
Разбор
Сначала синхронный sync. Таймеры с нулевой задержкой срабатывают в порядке постановки, каждый отдельной задачей. После первой задачи выполняются все микрозадачи, поэтому micro из таймера выводится раньше второго таймера, а не после всех таймеров. Таймер на 10 мс самый поздний, хотя поставлен первым.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.