Вопрос проверяет понимание различий в реализации event loop в браузере и Node.js, что важно для написания кода, работающего одинаково в обеих средах.
Event loop — это механизм, который позволяет выполнять асинхронный код в однопоточных средах, таких как браузер и Node.js. Обе реализации основаны на концепции очередей задач, но имеют различия из-за разного окружения.
В браузере event loop отвечает за обработку пользовательских событий, рендеринг страницы и выполнение JavaScript. Он делит задачи на макротаски (например, setTimeout, события) и микротаски (Promise, MutationObserver). После каждой макротаски выполняются все микротаски, а затем может произойти рендеринг.
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
// Вывод: 1, 4, 3, 2В Node.js event loop имеет шесть фаз: timers, pending callbacks, idle/prepare, poll, check, close callbacks. Каждая фаза имеет свою очередь. Микротаски (process.nextTick и Promise) выполняются между фазами, причем process.nextTick имеет приоритет над Promise.
console.log('1');
setTimeout(() => console.log('2'), 0);
setImmediate(() => console.log('3'));
process.nextTick(() => console.log('4'));
// Вывод: 1, 4, 2, 3 (порядок может варьироваться)Вывод: Различия в event loop важно учитывать при написании кода, который должен работать и в браузере, и в Node.js. Для кросс-платформенных приложений лучше использовать Promise и setTimeout, избегая специфичных API.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию