ご存知のとおり、JavaScript コードは 1 つのスレッド、つまり単一のスレッドでのみ実行できます。コードが存在すると、ブラウザが一時停止される可能性があります。
では、なぜ JavaScript はシングルスレッド モデルとして設計されているのでしょうか?
JavaScript の設計者は、JavaScript がマルチスレッドになるように設計されている場合、プログラムの複雑さが大幅に増加すると考えています。たとえば、2 つのスレッドがある場合、1 つのスレッドがボタンの作成を担当し、他のスレッドがボタンを削除します。スレッドの実行順序が不確実であるため、このボタンがページに表示される場合と表示されない場合があり、開発者に多大な迷惑を及ぼします。したがって、わかりやすくするために、JavaScript は最初からシングルスレッド モデルとして設計されており、これが JavaScript の中心的な機能です。
JavaScriptのシングルスレッド制限を解決するために、JavaScriptプログラムのタスクは、同期タスクと非同期タスクに分割されます
同期タスク: は、実行のためにキューに入れられ、実行されないタスクを指しますタスクがメインスレッド上の JavaScript エンジンによって一時停止されると、次のタスクは前のタスクが完了した後にのみ実行を開始します。
非同期タスク: は、JavaScript エンジンによってタスク キューに配置されるいくつかの時間のかかるタスク (IO リクエストなど) を指します。これらのタスクはメイン スレッド上にないため、メインにスケジュールされません。以前のスレッドは実行されません (ajax のコールバック関数など)。
では、タスクキューはどこから来るのでしょうか?
実際、JavaScript が実行されると、メイン スレッドに加えて、JavaScript エンジンはいくつかのタスク キューも作成します。これには、現在のプログラムが処理する必要がある非同期タスク (ajax 非同期コールバック関数、関数など) が含まれます。 setTimeout など。メインスレッド上のすべてのタスクが実行されると、エンジンは各タスクキューをチェックして、実行条件を満たすタスクがあるかどうかを確認し、存在する場合は、そのタスクがメインスレッドで実行されるようにスケジュールされます。
以上がJavascriptの非同期タスク原理(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。