> Каков порядок вывода консольных логов при использовании setTimeout и промисов в JavaScript (JavaScript)

Уровень: middle · Роль: frontend · Категория: Технические вопросы

Компании: amoCRM

Стек: JavaScript

> Пример ответа

Порядок вывода логов в консоли при использовании setTimeout и промисов определяется механизмом Event Loop и очередями задач (task queues) в JavaScript.

Сначала выполняются синхронные операции. Затем, когда стек вызовов освобождается, обрабатываются микрозадачи (microtasks), к которым относятся колбэки промисов (.then, .catch, .finally). После этого обрабатываются макрозадачи (macrotasks), такие как колбэки setTimeout.

Пример:

JAVASCRIPT
console.log('1'); // синхронно
setTimeout(() => {
console.log('2'); // макрозадача
}, 0);
Promise.resolve().then(() => {
console.log('3'); // микрозадача
});
console.log('4'); // синхронно

Вывод: 1, 4, 3, 2.

Объяснение: 1 и 4 выводятся сразу. Промис (микрозадача) выполняется до setTimeout (макрозадача), поэтому 3 выводится перед 2.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью