Answer

Answer

t.me/js_test

Ответ:

1 2 promise1 timer1 promise2 timer2

Объяснение:

Сначала выполняется весь синхронный код, в нашем случае это два верхнеуровневых лога ("1" и "2"). Затем выполняются все микротаски, в нашем случае это then первого промиса ("promise1"), также внутри выполнения первого промиса регистрируется новый setTimeout но пока не выполняется потому что в очереди макротасков лежит timer1, который и будет выполнятся ("timer1"). Внутри функции первого таймера регистрируется новая микрозадача promise2 она и будет выполнена потому что имеет больший приоритет чем timer2. Ну и последним выполняется timer2 так как очередь свободна.

Код:

console.log("1");

const promise1 = Promise.resolve().then(() => {
    console.log("promise1");
    const timer2 = setTimeout(() => {
        console.log("timer2");
    }, 0);
});

const timer1 = setTimeout(() => {
    console.log("timer1");
    const promise2 = Promise.resolve().then(() => {
        console.log("promise2");
    });
}, 0);

console.log("2");

Report Page