
В каком порядке выведутся логи в консоль при выполнении следующего фрагмента кода?
console.log(‘1’);
setTimeout(() => console.log(‘2’), 0);
Promise.resolve().then(() => console.log(‘3’));
console.log(‘4’);
Правильный ответ: 1 4 3 2
почему именно этот ответ:
1 и 4 выведутся сразу, так как это обычный синхронный код.
3 выведется следующим, потому что коллбэк промиса попадает в очередь микротасок (Microtasks). Движок выполняет их сразу же, как только завершился синхронный код.
2 выведется последним. Несмотря на задержку в 0 миллисекунд, setTimeout помещает коллбэк в очередь макротасок (Macrotasks), которые выполняются строго после полной очистки очереди микротасок.
