Вопрос проверяет понимание инструментов для отслеживания изменений DOM и управления очередью microtask.
MutationObserver позволяет отслеживать изменения в DOM без постоянных проверок. Он реагирует на добавление, удаление или изменение узлов. queueMicrotask позволяет вручную добавить задачу в очередь microtask. Оба механизма тесно связаны с event loop и выполняются до macrotask.
Работа с DOM и асинхронностью часто требует точного контроля момента выполнения кода.
MutationObserver — это API для наблюдения за изменениями в DOM-дереве.
Добавление и удаление узлов
Изменение атрибутов
Изменение текстового содержимого
const observer = new MutationObserver((mutations) => {
console.log(mutations);
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
Колбэк будет вызван асинхронно после изменений DOM.
queueMicrotask — это функция для добавления задачи в очередь microtask.
Выполняется после текущего синхронного кода
Выполняется до setTimeout
Аналогична Promise.then, но без создания Promise
queueMicrotask(() => {
console.log("microtask");
});
DOM-изменения фиксируются
MutationObserver добавляет задачу в microtask queue
Event loop выполняет microtask до macrotask
MutationObserver подходит для реакций на изменения DOM, а queueMicrotask — для точного управления порядком выполнения асинхронного кода.