JavaScript で非同期プログラミング パターンを実装する方法
JavaScript で非同期プログラミング モードを実装する方法: 1. 非同期プログラミングの最も基本的な方法であるコールバック関数、2. イベント リスニング、3. パブリッシュまたはサブスクライブ、4. Promises オブジェクト。
このチュートリアルの動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、DELL G3 コンピューター。
JavaScript で非同期プログラミング モードを実装する方法:
1. コールバック関数
これは非同期の最も基本的なものです。プログラミング手法。
2 つの関数 f1 と f2 があり、後者は前者の実行結果を待つとします。
コードは次のとおりです。
f1(); f2();
f1 が時間のかかるタスクである場合は、f1 を書き換えて、f1 のコールバック関数として f2 を記述することを検討できます。
コードは次のとおりです:
function f1(callback){ setTimeout(function () { // f1的任务代码 callback(); }, 1000); }
実行コードは次のとおりです:
コードは次のとおりです:
f1(f2);
このようにして、同期操作を非同期操作に変更します。F1 キーはプログラムの実行をブロックしません。これは、プログラムのメイン ロジックを最初に実行し、時間のかかる操作の実行を延期するのと同じです。
コールバック関数の利点は、シンプルで理解しやすく、デプロイしやすいことです。欠点は、コードの読み取りと保守に役立たないことです。さまざまな部分が高度に結合 (結合) されており、処理は非常に混乱し、各タスクはコールバック関数のみを指定できます。
2. イベント監視
もう 1 つの考え方は、イベント駆動型モデルを使用することです。タスクの実行はコードの順序ではなく、イベントが発生するかどうかによって決まります。
f1 と f2 を例に挙げてみましょう。まず、イベントを f1 にバインドします (ここでは jQuery を使用します)。
コードは次のとおりです:
f1.on('done', f2);
上記のコード行は、done イベントが f1 で発生すると、f2 が実行されることを意味します。次に、f1 を書き換えます:
コードは次のとおりです:
function f1(){ setTimeout(function () { // f1的任务代码 f1.trigger('done'); }, 1000); }
f1.trigger('done') は、実行が完了すると、done イベントがすぐにトリガーされ、開始されることを意味します。 f2を実行します。
この方法の利点は、比較的理解しやすいこと、複数のイベントをバインドできること、各イベントに複数のコールバック関数を指定できること、「分離」(デカップリング)できるため、モジュール化が容易であることです。欠点は、プログラム全体をイベント駆動型にする必要があり、実行プロセスが非常に不明確になることです。
3. パブリッシュ/サブスクライブ
前のセクションの「イベント」は「シグナル」として理解できます。
「シグナル センター」があると仮定します。タスクが完了すると、シグナル センターにシグナルを「発行」します。他のタスクはシグナル センターに「サブスクライブ」できます。実行を開始できます。これは「パブリッシュ/サブスクライブ パターン」(パブリッシュ/サブスクライブ パターン) と呼ばれ、「オブザーバー パターン」(オブザーバー パターン) とも呼ばれます。
このパターンの実装は多数ありますが、次に示すのは、jQuery のプラグインである Ben Alman の Tiny Pub/Sub です。
まず、f2 は「Signal Center」jQuery からの「done」シグナルをサブスクライブします。
コードは次のとおりです:
jQuery.subscribe("done", f2);
次に、f1 は次のように書き換えられます:
コードは次のとおりです:
function f1(){ setTimeout(function () { // f1的任务代码 jQuery.publish("done"); }, 1000); }
jQuery.publish( "done") は、f1 の実行が完了した後、"done" 信号が "シグナル センター" jQuery に解放され、それによって f2 の実行がトリガーされることを意味します。
また、f2 の実行完了後に購読を解除することもできます。
コードは次のとおりです:
jQuery.unsubscribe("done", f2);
このメソッドの性質は「イベント リスニング」に似ていますが、明らかに後者よりも優れています。なぜなら、「メッセージ センター」を見て、存在するシグナルの数と各シグナルの加入者数を確認することで、プログラムの動作を監視できるからです。
4. Promises オブジェクト
Promises オブジェクトは、非同期プログラミング用の統一インターフェイスを提供するために CommonJS ワーキング グループによって提案された仕様です。
簡単に言えば、各非同期タスクが Promise オブジェクトを返し、そのオブジェクトにはコールバック関数を指定できる then メソッドがあるという考え方です。たとえば、f1 のコールバック関数 f2 は次のように記述できます:
コードは次のとおりです:
f1().then(f2);
f1 は次のように書き換える必要があります (ここでは jQuery 実装が使用されています):
コードは次のとおりです:
function f1(){ var dfd = $.Deferred(); setTimeout(function () { // f1的任务代码 dfd.resolve(); }, 500); return dfd.promise; }
この方法で記述する利点は、コールバック関数がチェーン記述メソッドになること、プログラム フローが明確に見えること、および完全なセットがあることです。多くの強力な機能を実現できるメソッドをサポートします。
例: 複数のコールバック関数を指定します:
コードは次のとおりです:
f1().then(f2).then(f3);
別の例、エラー発生時のコールバック関数を指定します:
コードは次のとおりです:
f1().then(f2).fail(f3);
さらに、これには、前の 3 つのメソッドにはない利点があります。タスクが完了し、コールバック関数が追加された場合、コールバック関数がすぐに実行されます。そのため、イベントや信号を見逃すことを心配する必要はありません。この方法の欠点は、書くのも理解するのも比較的難しいことです。
関連する無料学習の推奨事項: JavaScript ビデオ チュートリアル
以上がJavaScript で非同期プログラミング パターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが
