Skip to content

JavaScript Async

foolmacky edited this page Nov 2, 2023 · 11 revisions

node.jsのエンジンは、ブラウザ上のJavaScriptエンジンに寄せた仕様になってはいるが、ブラウザのエンジンに備わってはいない機構ももつ スクリーンショット 2023-11-02 18 42 21

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

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

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

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

■ 参考

Clone this wiki locally