Существует ли ресурс где можно посмотреть все генераторы микро/макро задач?
Ссылка скопирована
По вводным: например, является ли вызов макро/микро задачей:
https://developer.mozilla.org/en-US/docs/Web/API/M...
Или этот:
https://developer.mozilla.org/en-US/docs/Web/API/W...
По вводным: методом тыка? - устану тыкать.
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

Единого “полного списка всех генераторов microtask/macrotask” для браузера нет, потому что это определяется спецификациями HTML, ECMAScript и конкретных Web API. Но есть устойчивое правило: microtasks - это Promise jobs, queueMicrotask и MutationObserver; macrotasks/tasks - это события, таймеры, I/O, postMessage, MessageChannel, UI events и большинство callback-ов Web API.
Базовая схема event loop:
Типичные microtasks:
Promise.resolve().then(() => console.log('promise')); queueMicrotask(() => console.log('microtask')); new MutationObserver(() => console.log('mutation'));Promise.resolve().then(() => console.log('promise')); queueMicrotask(() => console.log('microtask')); new MutationObserver(() => console.log('mutation'));
Типичные tasks/macrotasks:
setTimeout(() => console.log('timeout'), 0); setInterval(() => console.log('interval'), 1000); window.addEventListener('click', () => console.log('event')); postMessage('x', '*');setTimeout(() => console.log('timeout'), 0); setInterval(() => console.log('interval'), 1000); window.addEventListener('click', () => console.log('event')); postMessage('x', '*');
MessageChannel часто используют как быстрый task/macro task механизм, но детали могут зависеть от окружения. RequestAnimationFrame - отдельная фаза перед отрисовкой, его не стоит грубо называть обычной macrotask.
Где читать: MDN “Microtask guide”, WHATWG HTML “Event loops”, Jake Archibald “Tasks, microtasks, queues and schedules”. Для конкретного API нужно смотреть раздел спецификации: если там написано queue a task - это task, если queue a microtask - microtask.
Практический способ проверить порядок:
console.log('sync'); setTimeout(() => console.log('timeout'), 0); Promise.resolve().then(() => console.log('promise')); queueMicrotask(() => console.log('queueMicrotask')); console.log('sync end');console.log('sync'); setTimeout(() => console.log('timeout'), 0); Promise.resolve().then(() => console.log('promise')); queueMicrotask(() => console.log('queueMicrotask')); console.log('sync end');
Вывод: универсальной таблицы на все Web API нет, но есть надежный метод: смотреть спецификацию и формулировку queue a task / queue a microtask. Для повседневной разработки достаточно помнить, что Promise/queueMicrotask выполняются раньше таймеров и событий следующего цикла.