Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.
Ожидаемый вывод в консоль – задача 109
Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какой результат будет выведен в консоль?
console.log(1);
setTimeout(() => console.log(2));
Promise.resolve().then(() => console.log(3));
let myPromise = new Promise(function(resolve, reject) {
console.log(4);
resolve();
});
myPromise.then(function() {
console.log(5);
});
Promise.resolve().then(() => setTimeout(() => console.log(6)));
Promise.resolve().then(() => console.log(7));
setTimeout(() => console.log(8));
console.log(9);
Ответ
Порядок вывода: 1, 4, 9, 3, 5, 7, 2, 8, 6. Число 4 печатается синхронно в executor, а таймер для 6 регистрируется позже — из микрозадачи.
Синхронная часть выводит 1, 4 и 9. Затем очередь микрозадач выполняет печать 3, печать 5, регистрацию таймера 6 и печать 7. После этого обрабатываются таймеры: ранее зарегистрированные 2 и 8, затем созданный в микрозадаче 6. Отсутствующая задержка и 0 не заставляют таймер выполниться до завершения синхронного кода и микрозадач.