Вопрос по микро и макрозадачам. Event loop
Вопрос из https://learn.javascript.ru/event-loop
setTimeout(function timeout() {
console.log('Таймаут');
}, 0);
let p = new Promise(function(resolve, reject) {
console.log('Создание промиса');
resolve();
});
p.then(function(){
console.log('Обработка промиса');
});
console.log('Конец скрипта');
learn js пишет что правильный ответ:
Создание промиса
Конец скрипта
Обработка промиса
Таймаут
но. почему так? Ведь сначала выполняются обычные задачи, потом по приоритету микро и потом макро. Должно же быть
Конец скрипта
Создание промиса
Обработка промиса
Таймаут
Можете разьяснить?(
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Конструктор new Promise выполняется синхронно.
Таким образом сначала выводится
console.log('Создание промиса');
Затем
console.log('Конец скрипта');
Далее выполняется микротаск и выводится
console.log('Обработка промиса');
И далее выполняется следующая задача запланированная с помощью setTimeout
console.log('Таймаут');