ホームページ >ウェブフロントエンド >jsチュートリアル >組み込みの非同期性がないにもかかわらず、JavaScript はどのようにして非同期動作を実現するのでしょうか?

組み込みの非同期性がないにもかかわらず、JavaScript はどのようにして非同期動作を実現するのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-12 16:00:031022ブラウズ

How does Javascript achieve asynchronous behavior despite lacking built-in asynchronicity?

Javascript で非同期が必要な理由

開発中によく「コールバック関数」という用語に遭遇します。これらの関数は非同期で実行されます。つまり、プログラムの標準的な同期フローの外で実行されます。しかし、この非同期動作は具体的に何がトリガーされるのでしょうか?

構文だけでは不十分

JavaScript では、コールバック関数の構文は非同期を示しません。同期コールバックと非同期コールバックはどちらも同様の構造を持っています。

Documentation is Key

関数がコールバックを同期的に呼び出すか非同期的に呼び出すかを判断する唯一の確実な方法は、参照することです。ドキュメント。ドキュメントがなくても、簡単なテストを実行してその動作を確認することもできます。

非同期の実装: 2 つのパス

JavaScript には基本的に非同期性が組み込まれていません。これを実現するには、開発者には 2 つのオプションがあります。

  • setTimeout や Web ワーカーなどの外部非同期関数を利用する。
  • 実行を C コードに委任する。

< ;h3>イベントの役割Loop

イベント ループは、JavaScript のアーキテクチャの重要な部分です。非同期実行の開始と、ネットワーク I/O などのイベントの処理を担当します。 select() のような I/O プリミティブを採用することで、イベント ループは余分なスレッドを作成せずに複数の I/O 操作を効率的に待機します。

select() および Callback Invocation

I/O 操作が完了すると、select() はインタープリタに通知します。次に、インタプリタは関連する I/O チャネルに関連付けられたコールバックを識別し、それを実行します。このメカニズムは、setTimeout と setInterval の機能も支えています。

追加機能: I/O 用スレッド

最新のブラウザーと Node.js はイベントを拡張しました。ループモデル。ファイルベースの I/O を処理するスレッドが組み込まれています。完了すると、これらのスレッドはメイン イベント ループと通信して、適切なコールバック実行をトリガーします。

gt;結論

非同期実行はイベント ループとスレッドベースに固有のものです。 I/O管理。これらの基礎となるメカニズムを理解すると、JavaScript および関連テクノロジーの非同期プログラミングの理解が深まります。

以上が組み込みの非同期性がないにもかかわらず、JavaScript はどのようにして非同期動作を実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。