> Что происходит при встрече промиса во время выполнения синхронного кода в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: JavaScript
> Пример ответа
Когда в синхронном коде встречается промис (например, созданный через new Promise или возвращаемый асинхронной функцией), сам конструктор промиса выполняется синхронно. То есть функция-исполнитель (executor), переданная в new Promise, запускается немедленно, в том же потоке, до продолжения последующего синхронного кода.
Однако методы .then(), .catch() и .finally(), а также await (внутри async-функции) ставят свои колбэки в микрозадачу (microtask queue). Эти колбэки выполняются только после завершения текущего синхронного стека и до начала следующей макрозадачи (например, обработки событий или таймеров).
Пример:
JAVASCRIPTconsole.log('1');new Promise((resolve) => {console.log('2');resolve();}).then(() => console.log('3'));console.log('4');// Вывод: 1, 2, 4, 3
Здесь console.log('2') выполняется синхронно, а .then() - асинхронно, после всего синхронного кода. Таким образом, промис не блокирует выполнение, а откладывает обработку результата.
> Похожие задачи по frontend
Всегда ли JavaScript выполняется после события onload
Как сделать попап без JavaScript и возможно ли это
Как улучшить реализацию EventEmitter с использованием Map и Set в JavaScript
Как реализовать хранение нескольких колбэков для одного события в EventEmitter
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью