Вопрос по микро и макрозадачам. 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('Таймаут');
→ Ссылка