
Микрозадачи
Асинхронные задачи требуют правильного управления. Для этого стандарт предусматривает внутреннюю очередь
Как сказано в спецификации:
- Очередь определяется как первым-пришёл-первым-ушёл (FIFO): задачи, попавшие в очередь первыми, выполняются тоже первыми.
- Выполнение задачи происходит только в том случае, если ничего больше не запущено.
Или, проще говоря, когда промис выполнен, его обработчики
Вот почему сообщение «код выполнен» в примере выше будет показано первым.
#микрозадачи #промисы
Асинхронные задачи требуют правильного управления. Для этого стандарт предусматривает внутреннюю очередь
PromiseJobs
, более известную как «очередь микрозадач (microtask queue)» (термин V8).Как сказано в спецификации:
- Очередь определяется как первым-пришёл-первым-ушёл (FIFO): задачи, попавшие в очередь первыми, выполняются тоже первыми.
- Выполнение задачи происходит только в том случае, если ничего больше не запущено.
Или, проще говоря, когда промис выполнен, его обработчики
.then/catch/finally
попадают в очередь. Они пока не выполняются. Движок JavaScript берёт задачу из очереди и выполняет её, когда он освободится от выполнения текущего кода.Вот почему сообщение «код выполнен» в примере выше будет показано первым.
#микрозадачи #промисы