Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.
Порядок вывода в консоль (задача №5)
Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какие строки появятся в консоли при выполнении следующего кода.
console.log('1');
setTimeout(() => {
console.log('2');
}, 0);
Promise.resolve().then(() => {
console.log('3');
});
new Promise((resolve, reject) => {
console.log('4');
setTimeout(() => {
console.log('5');
resolve('6');
}, 0);
}).then(value => {
console.log('7');
setTimeout(() => {
console.log(value);
}, 0);
});
Ответ
Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.
Первый стек печатает 1 и 4, затем микрозадача — 3. Таймеры 2 и 5 были поставлены в этом порядке; после 5 resolve делает доступным then с 7. В нём создаётся ещё один таймер, который позже печатает переданное значение 6.