Node.jsのイベント駆動型

コピー元のNode.jsを理解します

あなたは、同時にいくつかのことを行う必要がある場合、ノードは、基本的には非常に良いです。あなたは、コードの一部を書かれ、「私はこれが並行して実行してほしい」と述べたことがありますか?まあ、ノードにすべてがあなたのコードを除いて、並列に実行されます。

一度にいくつかのことを行う必要がある場合には、基本的には非常に良いノード。あなたは、コードの一部を書かれ、「私はそれが並列で実行を願っています」と言うことがありますか?ノード内のコードに加えて、すべてのものが平行になっています。

「はぁ?」
そう、すべてはあなたのコードを除いて、並列に実行されます。それを理解するために、あなたのコードは王である想像し、そしてノードは使用人の彼の軍隊です。

あなたのコードはビッグブラザーで想像し、ノードは彼のメッセンジャーです。

日は1つのサーバント王を覚ますと、彼は何が必要な場合は、彼を尋ねることによって開始します。王はしもべにタスクのリストを与え、少し長くスリープ状態に戻ります。サーバントは現在、彼の同僚の間でこれらのタスクを配布し、彼らが仕事を得ます。

その日カウボーイは弟を覚ますと、何をすべきか彼に尋ねました。ビッグブラザーは、タスクリストを与え、それを行うために一緒に他のカウボーイカウボーイにタスクを割り当てる、遼をスリープ状態に継続されます。

サーバントがタスクを終了すると、王の四半期の外に彼のラインアップは、報告します。王は、一度に1つのサーバントを中にすることができます、と彼は報告の事に耳を傾け。時には、王はしもべに出て途中で複数のタスクを与えるだろう。
王の使用人は、並行して、彼のすべてのタスクを実行するが、一度に一つの結果を報告し、その王が集中することができますのために人生は、良いです。*

メッセンジャーは保護のお金を収穫するたびに、彼はただ、時には完全なレポートがする取り決めでカウボーイカウボーイの前でなり、カウボーイの仕事に関する報告を聞き、各兄弟にビッグブラザーの家ビッグブラザーレポートの外に並ぶだろう他のタスク(すなわち、コールバック、バッグを購入する姉妹など)

「それは素晴らしいですが、あなたは愚かなメタファーを終了し、私にオタクを話すだろうか?」
確かに。簡単なノードプログラムは次のようになります。

説明次のコードスニペットを使用します

var fs = require('fs')
  , sys = require('sys');

fs.readFile('treasure-chamber-report.txt', function(report) {
  sys.puts("oh, look at all my money: "+report);
});

fs.writeFile('letter-to-princess.txt', '...', function() {
  sys.puts("can't wait to hear back from her!");
});

あなたのコードは、ファイルを読み書きするノードに2つのタスクが与え、その後、スリープ状態になります。ノードがタスクを完了すると、そのためのコールバックが発射されます。しかし、唯一、同時に発射1つのコールバックが存在することができます。そのコールバックが実行を終了するまで、他のすべてのコールバックが並んで待たなければなりません。それに加えて、コールバックが発火する順序に保証はありません。

このコードは、ノードは二つのタスクを読み書きすることができ、そのノードがスリープしていきます。タスクが完了するまで、彼はコールバックをトリガしますが、唯一のコールバック関数が実行されると同時に、(コールバック関数の残りは一つの実行順序によって、キュー1内に配置されます)タスクが並列に実行されているので、我々は順序が(なぜいわゆるコールバック地獄です)コールバック関数をトリガー保証することはできません。

これは〜シングルスレッドのJavaScript /イベントループのデザインの美しさであります

おすすめ

転載: www.cnblogs.com/riwang/p/riwang.html