Я запутался, какое задание выполняется первым по событию l oop.
Причина указана ниже.
Ответ Stackoverflow от this
После завершения этой макрозадачи все доступные микрозадачи будут обработаны
Аналогичный пример из этой статьи блога
setTimeout(() => console.log('Macro task'), 0);
Promise.resolve().then(() => console.log('Micro task'));
Итак, меня это очень смущает. До сих пор я понял следующее:
- Код, который не является функцией обратного вызова, сразу вставляется в стек вызовов.
- Функция обратного вызова
setTimeout()
вставляется в очередь задач макроса. - Функция обратного вызова
Promise
вставлена в очередь микро-задач. - Когда стек вызовов пуст, событие l oop берет задачу из очереди микро-задач и запускается.
- После выполнения всех микро-задач событие l oop берет задачу из очереди макрокоманд и запускается.
Этот процесс - мое понимание, и я прав?