Проверяет понимание модели событийного цикла JavaScript и того, к какой очереди относятся сетевые запросы, что важно для предсказуемой асинхронной работы.
В JavaScript есть событийный цикл (event loop), который управляет выполнением кода. Он различает два основных типа очередей: микрозадачи (microtasks) и макрозадачи (macrotasks). Микрозадачи выполняются сразу после текущей операции, до следующей макрозадачи. Макрозадачи выполняются по одной за цикл, между ними очищается очередь микрозадач.
Сам сетевой запрос (например, fetch или XMLHttpRequest) не является задачей в этих очередях. Это асинхронная операция, которая выполняется браузером или Node.js вне основного потока. Когда запрос завершается, его результат помещается в соответствующую очередь в зависимости от API:
Таким образом, ответ зависит от того, как именно вы обрабатываете результат запроса.
console.log('start');
fetch('/api/data').then(() => console.log('fetch done'));
Promise.resolve().then(() => console.log('promise microtask'));
console.log('end');
// Вывод: start, end, promise microtask, fetch done
// Колбэк fetch — микрозадача, но выполнится после других микрозадач, так как запрос ещё не завершён.const xhr = new XMLHttpRequest();
xhr.open('GET', '/api/data');
xhr.onload = () => console.log('xhr done'); // макрозадача
xhr.send();
setTimeout(() => console.log('timeout'), 0);
// Порядок может быть разным, но оба — макрозадачи.Понимание этого различия помогает правильно выстраивать порядок выполнения кода, избегать блокировок и предсказывать, когда именно выполнится обработчик после сетевого запроса. Например, если нужно, чтобы код выполнился как можно скорее после ответа, используйте промисы (микрозадачи). Если важна совместимость со старым кодом на XHR, помните, что его события — макрозадачи.
Итог: сетевые запросы не относятся напрямую ни к микрозадачам, ни к макрозадачам — это асинхронные операции, а их колбэки распределяются по очередям в зависимости от используемого API. Для современных приложений на промисах ответы обычно обрабатываются как микрозадачи.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию