ホームページ > 記事 > ウェブフロントエンド > JavaScript の非同期実行メカニズムの概要
----非同期実行メカニズムは次のとおりです:
1. 左右の同期タスクはメインスレッドで実行され、実行スタックを形成します
2. メインスレッドに加えて、タスクもあります。非同期タスクに実行結果がある限り、イベントをタスク キューに配置するだけです
3. 実行スタック内のすべての同期タスクが完了すると、システムはタスク キューを読み取り、対応するタスクをキューに配置します。メインスレッドで実行されると、メインスレッドは待機状態を終了し 、実行スタックに入り、実行を開始します
(メインスレッドが空である限り、タスクキューが読み取られます。これがJavaScript です)実行メカニズム。このプロセスは継続的に繰り返されます)
4. メインスレッドは上記のステップを繰り返します - JavaScript がシングルスレッドである理由: 1. JavaScript はブラウザーとして一度に 1 つのことしか実行できません。スクリプト言語では、複数のスレッドで実行される操作は競合を引き起こす可能性があるため、JavaScript はシングルスレッドでのみ実行できます--- - setTimeout() はイベントを「タスク キュー」に挿入するだけであることに注意してください。メインスレッドは、指定された ---- 「タスク キュー」はイベント キュー (メッセージ キューとしても理解できます) であり、IO デバイスがタスクを完了すると、関連する非同期タスクを表すイベントが「タスク キュー」に追加されます。 . 「実行スタック」に入ることができます。メインスレッドは「タスクキュー」を読み取ります。これは、その中のイベントを読み取ることを意味します。 「タスクキュー」内のイベントには、IO デバイスイベントに加えて、ユーザーが生成したイベント (マウスクリック、ページスクロールなど) も含まれます。コールバック関数が指定されている限り、これらのイベントは発生時に「タスクキュー」に入り、メインスレッドによる読み取りを待ちます。 いわゆる「コールバック関数」(コールバック)は、メインスレッドによってハングアップされるコードです。非同期タスクでは、コールバック関数を指定する必要があります。メインスレッドが非同期タスクの実行を開始すると、対応するコールバック関数が実行されます。 「タスクキュー」は先入れ先出しのデータ構造で、最初にランク付けされたイベントが最初にメインスレッドによって読み取られます。メインスレッドの読み取りプロセスは基本的に自動的に行われ、実行スタックがクリアされるとすぐに、「タスクキュー」の最初のイベントが自動的にメインスレッドに入ります。ただし、後述する「timer」関数により、メインスレッドは最初に実行時間を確認する必要があり、特定のイベントは指定された時間後にのみメインスレッドに戻ることができます。
----JavaScript は、コードが存在しない場合はすぐに実行されます。プロセスがアイドル状態の場合は、できるだけ早く実行されます。以上がJavaScript の非同期実行メカニズムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。