Node.js の非同期および同期プログラミングを理解する
NodeBeginner Web サイトを探索しているときに、データベース クエリを実行する 2 つの異なるコード スニペットを見つけました。 。目標は明確ですが、同期プログラミングと非同期プログラミングの違いはわかりにくいままです。
同期プログラミング:
最初のコード スニペット:
var result = database.query("SELECT * FROM hugetable"); console.log("Hello World");
このコードは同期的に動作します。プログラムは最初の行で停止し、クエリの完了を待ちます。したがって、「Hello World」を出力する次の行は、クエリの終了後にのみ実行できます。
非同期プログラミング:
対照的に、2 番目のコード スニペットは次のようになります。
database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");
非同期プログラミングを採用します。ここでは、「Hello World」メッセージが即座に出力され、同時にクエリの実行が実行されます。コールバック関数は、完了後にクエリの結果を受け取ります。
主な違い:
重要な違いは、同期コードのブロック動作にあります。同期プログラミングでは、クエリが処理されるまで他のコードの実行が停止しますが、非同期プログラミングでは、クエリの結果を待機している間に他のタスクを並行して実行できます。
実行フロー:
まず、同期コード スニペットは次のようになります。
Query finished Next line
一方、非同期コード スニペットは次のように出力します。
Next line Query finished
非同期プログラミングのノンブロッキングの性質を示します。
Node.js のイベント駆動型非同期:
シングルスレッドであるにもかかわらず、 Node.js は、イベント駆動型のアーキテクチャにより、非同期操作を可能にします。ファイル システム操作などのタスクは別のプロセスで処理されます。メイン ノード スレッドはこれらの操作に関する通知を受信し、他のタスクの実行をブロックすることなく適切に応答できるようにします。
以上がNode.js の同期と非同期: データベース クエリはどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。