Задать вопрос
@historydev

По какой логике формируется очередь микро задач с async/await синтаксисом?

С then всё понятно, не могу найти где почитать, на mdn в разделах async/await/AsyncFunction object ничего на этот счёт не нашёл.
- Спецификацию пока избегаю намеренно, трудоёмко выйдет.

Вот минимальный пример, всё что после await можно считать микро-задачами?
console.log("sync start"); // 1

setTimeout(() => {
    console.log("setTimeout"); // 6
}, 0);

Promise.resolve().then(() => {
    console.log("promise then");  // 4
});

(async () => {
    console.log("async start"); // 2
    await null; // любой await ставит продолжение тела функции в очередь микрозадач 
    console.log("async after await"); // 5
})();

console.log("sync end"); // 3

/*
"sync start"
"async start"
"sync end"
"promise then"
"async after await"
"setTimeout"
*/
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
всё что после await можно считать микро-задачами?


только когда справа от await нечто "зарезолвленное", как в твоем примере. А если там промис (или просто thenable), то может быть как угодно. Но в любом случае да, это не продолжение синхронного кода
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы