> Что сработает раньше: callback или promise (JavaScript)
Уровень: senior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: ЭНИРАН
Стек: Node.js, JavaScript
> Пример ответа
В среде выполнения JavaScript (включая Node.js) callback сработает раньше, чем Promise, если они оба находятся в одном и том же синхронном потоке кода. Это связано с тем, как работают очереди событий (Event Loop) и микротаски (microtasks).
- Callback, переданный в асинхронную функцию (например,
setTimeout(callback, 0)), попадает в очередь макрозадач (macrotask queue). Он выполняется после завершения текущего синхронного кода, но до следующего цикла событий. - Promise (например,
.then()илиawait) создает микротаску (microtask). Микротаски имеют более высокий приоритет и выполняются сразу после завершения текущего синхронного кода, но перед следующей макрозадачей.
Однако если callback и Promise находятся в одном и том же синхронном блоке (например, внутри функции), то Promise сработает раньше, потому что микротаски обрабатываются до макрозадач. Пример:
JAVASCRIPTconsole.log('Синхронный код');setTimeout(() => {console.log('Callback (макрозадача)');}, 0);Promise.resolve().then(() => {console.log('Promise (микротаска)');});// Вывод:// Синхронный код// Promise (микротаска)// Callback (макрозадача)
Таким образом, в общем случае Promise (микротаска) выполняется раньше, чем callback (макрозадача), если они оба запланированы в одном контексте.
> Похожие задачи по JavaScript
Какие вопросы возникают при работе с миграциями в Prisma
С какими транспортными протоколами и технологиями вы работали (брокеры сообщений, вебсокеты, вебхуки)
Как устроен garbage collector
Для чего нужен setImmediate() в JavaScript и как он работает
> Похожие задачи по frontend
Какие факторы в работе для вас неприемлемы
С какими транспортными протоколами и технологиями вы работали (брокеры сообщений, вебсокеты, вебхуки)
Как устроен garbage collector
Для чего нужен setImmediate() в JavaScript и как он работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью