> Что происходит при встрече промиса во время выполнения синхронного кода в JavaScript (JavaScript)

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

Компании: IT-One

Стек: JavaScript

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

Когда в синхронном коде встречается промис (например, созданный через new Promise или возвращаемый асинхронной функцией), сам конструктор промиса выполняется синхронно. То есть функция-исполнитель (executor), переданная в new Promise, запускается немедленно, в том же потоке, до продолжения последующего синхронного кода.

Однако методы .then(), .catch() и .finally(), а также await (внутри async-функции) ставят свои колбэки в микрозадачу (microtask queue). Эти колбэки выполняются только после завершения текущего синхронного стека и до начала следующей макрозадачи (например, обработки событий или таймеров).

Пример:

JAVASCRIPT
console.log('1');
new Promise((resolve) => {
console.log('2');
resolve();
}).then(() => console.log('3'));
console.log('4');
// Вывод: 1, 2, 4, 3

Здесь console.log('2') выполняется синхронно, а .then() - асинхронно, после всего синхронного кода. Таким образом, промис не блокирует выполнение, а откладывает обработку результата.

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

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