JavaScript コールバック: すべてが非同期であるわけではありません
多くの JavaScript 開発者は、特にブラウザなどの特定の状況では、JavaScript のすべてのコールバックが非同期であると想定しています。ベースの XHR リクエストと Node.js ファイル I/O。ただし、ブラウザ環境とノード環境では、コールバック非同期の処理が異なります。
ブラウザ環境
ブラウザでは、コールバック非同期は主に XHR リクエストから発生します。これは、ブラウザの XHR オブジェクトがデフォルトで非同期操作に設定されており、ノンブロッキング リクエストが許可されているためです。ただし、jQuery の AJAX 関数には、同期リクエストを強制するために false に設定できる「async」フラグが用意されています。
Node.js 環境
Node.js では、非同期性コールバックでは、通常、ファイル I/O、process.nextTick、setTimeout、または setInterval を含む操作から発生します。 MongoDB/Mongoose などのライブラリを使用してデータベース呼び出しを実行する場合、これらの操作は本質的にブロックする性質があるため、V8 イベント ループに関与します。
非同期コールバックの決定
JavaScript で非同期コールバックにラベルを付ける標準化された方法では、どれが実際に非同期コールバックであるかを識別することが困難になる場合があります。開発者は、非同期性を判断するにはドキュメントを参照するか、コードの実装を調べる必要があります。
非同期コールバックの作成
以前のバージョンの JavaScript では、非同期性を実現するにはホストが提供する関数を使用する必要がありました。 。しかし、ECMAScript 6 での Promise の導入により、非同期性に対する言語レベルのアプローチが登場しました。 Promise を返す関数は、then 経由で登録されたコールバックの非同期実行を保証します。
結論として、すべての JavaScript コールバックが本質的に非同期であるわけではありません。ブラウザ環境とノード環境では非同期の処理方法が異なるため、コールバックの非同期を判断するにはドキュメントのレビューとコードの検査が必要です。ホストが提供する関数は非同期機能を作成する手段を提供しますが、Promise は JavaScript で非同期性を実現するための標準化された便利な方法を提供します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3