ホームページ  >  に質問  >  本文

これら 4 つの setTimeout 関数とその実行部分を見てください。

リーリー

ここでは setTimeout 関数を 4 つ書きましたが、私の理解では、これらはコールバック キュー内で同時に実行を開始しますよね。私の考えが正しければ、私の質問は、4 番目の setTimeout() 関数がコールバック キュー内で実行の半分または半分以上を完了したのか、それともコール スタック実装にプッシュされてから 7 秒後に最初から開始されるのかということです。では、舞台裏で何が起こっているのでしょうか?

P粉304704653P粉304704653398日前558

全員に返信(1)返信します

  • P粉709307865

    P粉7093078652023-09-18 13:33:27

    これらの関数は、コールバック キュー内で並列または同時に実行されません。これらは個別かつ非同期的にスケジュールされます。実行順序は、各関数に指定されたレイテンシによって異なります。 setTimeout 関数ごとに、指定された遅延の後にコールバックが実行されるようにスケジュールされます。

    実行シーケンスは次のとおりです:

    リーリー

    ただし、4 番目の setTimeout 関数は、他の setTimeout 関数と一緒に実行されるとは限りません。また、それ自体の実行時間も保証されません。 実行順序はコールバック キューによって決定され、イベント ループはコールバック キューからタスクを取得し、コール スタックが空の場合にのみコール スタック内でタスクを実行します。したがって、4 番目の setTimeout 関数は、コール スタックに他のタスクがない場合にのみ実行を開始します。指定されたコードを実行すると、出力は次の順序で表示されます:

    出力の順序は次のとおりです:

    リーリー

    返事
    0
  • キャンセル返事