JS言語の実行環境は「シングルスレッド」 なぜ非同期プログラミングが発生するのでしょうか?
単一スレッドとは、一度に 1 つのタスクのみを完了できることを意味します。複数のタスクがある場合は、それらをキューに入れ、前のタスクが完了するまで待ってから、次のタスクを実行する必要があります。
2 つのタスク実行モード: 同期と非同期
「非同期モード」:
コールバック関数は、非同期プログラミングの最も基本的な方法です。各タスクには 1 つ以上のコールバック関数があり、前のタスクが実行された後は次のタスクは実行されませんが、前のタスクが完了した後に後者のタスクが実行されるため、プログラムの実行順序は決まります。ソート順序が一貫性がなく、非同期です。
非同期プログラミングの 4 つの方法:
1. コールバック関数
これは、非同期プログラミングの最も基本的な方法です。
f1 と f2 という 2 つの関数があり、後者は前者の実行結果を待つとします。
f1 が時間のかかるタスクの場合は、f2 を f1 のコールバック関数として記述できます。
function f1(callback){ setTimeout(function(){ //f1的任务代码 callback(); },1000); }ログイン後にコピー
コードを実行
f1(f2)
この方法を使用する利点は、シンプルで理解しやすく、展開しやすいことです。欠点は、コードの読み取りと保守が難しく、プロセスが非常に複雑になることです。タスクごとにコールバック関数を指定できます。
2. イベント監視
イベント駆動型モデルを採用します。タスクの実行はコードの順序ではなく、イベントが発生するかどうかによって決まります。
まず、イベントをf1にバインドします(jQueryの記述メソッドを使用)。
f1.on(‘done’,f2); //当f1发生done事件,就执行f2。然后对f1进行改写:ログイン後にコピー
は次のとおりです:
fuction f1(){ setTimeout(function(){ //f1的任务代码 f1.trigger(‘done’); },1000); }ログイン後にコピー
f1.tigger(‘done’) は、実行が完了した後、すぐにdoneイベントがトリガーされ、f2の実行が開始されることを意味します。
この方法の利点は、理解しやすいこと、複数のイベントをバインドできること、各イベントで複数のコールバック関数を指定できること、分離できるため、モジュール化が容易であることです。
欠点: プログラム全体をイベント駆動型にする必要があり、実行プロセスが非常に不明確になります。
関連する推奨事項:
JavaScript非同期プログラミングのコールバック関数とマネージャーの使用例の詳細な説明
以上がJS非同期プログラミング例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。