Назад к вопросам
Middle
7
Задача на Event Loop: определите порядок вывода в консоль при наличии setTimeout, Promise и синхронного кода. Что будет выведено последним и почему?
Компании, где спрашивали
RedLab
Ответ от нейросети
sobes.tech AI
В JavaScript порядок выполнения кода с setTimeout, Promise и синхронным кодом определяется Event Loop и очередями задач (task queue и microtask queue).
- Сначала выполняется весь синхронный код.
- Затем выполняются все микротаски (microtasks), например, обработчики Promise.
- После этого выполняются макротаски (tasks), например, setTimeout.
Пример:
console.log('Синхронный код');
setTimeout(() => {
console.log('setTimeout');
}, 0);
Promise.resolve().then(() => {
console.log('Promise');
});
Вывод будет:
Синхронный код
Promise
setTimeout
Последним будет выведено сообщение из setTimeout, потому что setTimeout ставится в очередь макротасков, которая обрабатывается после микротасков (Promise).