Порядок: 4, 1, 2, 3. После callback первого таймера выполняется поставленная им микрозадача, прежде чем начнётся второй таймер.
Микрозадачи между двумя callbacks таймеров
Порядок: 4, 1, 2, 3. После callback первого таймера выполняется поставленная им микрозадача, прежде чем начнётся второй таймер.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В браузере выполнен код:
setTimeout(() => {
console.log(1);
Promise.resolve().then(() => console.log(2));
}, 0);
setTimeout(() => console.log(3), 0);
console.log(4);
Назовите порядок вывода.
Ответ
Порядок: 4, 1, 2, 3. После callback первого таймера выполняется поставленная им микрозадача, прежде чем начнётся второй таймер.
Оба таймера регистрируются в одном скрипте с одинаковой задержкой. Синхронный вывод 4 происходит первым. Неверно считать, что все callbacks таймеров обязательно выполняются до всех Promise: важен момент создания микрозадач и контрольные точки их обработки между задачами.