Event Loop (JS)
Он делит все задачи на подтипы:
микрозадачи;
макрозадачи;
задачи отрисовки.
В микрозадачи попадают в основном только две категории: then у промисов, а также Intersection Observer.
Макрозадачами являются все асинхронные операции, такие как XmlHTTPRequest, setTimeout и так далее.
В задачи отрисовки попадают задачи связанные с отрисовкой и обновлением контента страницы.
Каким образом определяется, какая из задач выполняется первой?
Сначала Event Loop проверяет выполнились ли все синхронные задачи
Потом выполняются все задачи из микротасков
После выполнения всех микротасков - очередь очищается
Затем мы берем одну макрозадачу из списка и выполняем ее
После выполнения мы смотрим нужно ли нам сделать перерисовку страницы
Если перерисовать страницу нужно - делаем это
Все снова начинается с первого пункта
Подробнее: Event Loop