リーリー
ここでは setTimeout 関数を 4 つ書きましたが、私の理解では、これらはコールバック キュー内で同時に実行を開始しますよね。私の考えが正しければ、私の質問は、4 番目の setTimeout() 関数がコールバック キュー内で実行の半分または半分以上を完了したのか、それともコール スタック実装にプッシュされてから 7 秒後に最初から開始されるのかということです。では、舞台裏で何が起こっているのでしょうか?
これらの関数は、コールバック キュー内で並列または同時に実行されません。これらは個別かつ非同期的にスケジュールされます。実行順序は、各関数に指定されたレイテンシによって異なります。 setTimeout 関数ごとに、指定された遅延の後にコールバックが実行されるようにスケジュールされます。
実行シーケンスは次のとおりです:
ただし、4 番目の setTimeout 関数は、他の setTimeout 関数と一緒に実行されるとは限りません。また、それ自体の実行時間も保証されません。 実行順序はコールバック キューによって決定され、イベント ループはコールバック キューからタスクを取得し、コール スタックが空の場合にのみコール スタック内でタスクを実行します。したがって、4 番目の setTimeout 関数は、コール スタックに他のタスクがない場合にのみ実行を開始します。指定されたコードを実行すると、出力は次の順序で表示されます:
出力の順序は次のとおりです:
これらの関数は、コールバック キュー内で並列または同時に実行されません。これらは個別かつ非同期的にスケジュールされます。実行順序は、各関数に指定されたレイテンシによって異なります。 setTimeout 関数ごとに、指定された遅延の後にコールバックが実行されるようにスケジュールされます。
実行シーケンスは次のとおりです:
リーリーただし、4 番目の setTimeout 関数は、他の setTimeout 関数と一緒に実行されるとは限りません。また、それ自体の実行時間も保証されません。 実行順序はコールバック キューによって決定され、イベント ループはコールバック キューからタスクを取得し、コール スタックが空の場合にのみコール スタック内でタスクを実行します。したがって、4 番目の setTimeout 関数は、コール スタックに他のタスクがない場合にのみ実行を開始します。指定されたコードを実行すると、出力は次の順序で表示されます:
出力の順序は次のとおりです:
リーリー