JavaScript Async - foolmacky/DevelopDocs GitHub Wiki

node.jsのエンジンは、ブラウザ上のJavaScriptエンジンに寄せた仕様になってはいるが、ブラウザのエンジンに備わってはいない機構ももつ

  • すべてのmicrotaskは次のmacrotaskが実行される前に完了する。実行環境の状態が「同じ」であることを保証する必要があるため。
  • microtask間では連続ですべて処理され、間に他のイベントの処理などは挿入されない。
  • 長い時間かかる処理などは、処理を分割してtask化し、途中で描画などを処理させることが行われる
//コードが実行される順番
//1番目 taskとして処理
f1();

setTimeout(() => {
  //5番目 taskとして処理されるcallback関数
  f5();
});

Promise.resolve()
  .then(() => {
    //3番目 microtaskとして処理されるcallback関数
    f3();
  })
  .then(() => {
    //4番目 microtaskとして処理されるcallback関数
    f4();
  });

//2番目 taskとして処理
f2();

■ 参考