2016-12-31 9 views
0

リクエストオブジェクトにリスナーを割り当て、データが来たらこの関数が実行されます。私の質問は、どのように "チャンク"変数は、関数呼び出しでその価値を得ている?これは要求オブジェクトへの何らかの暗黙的な割り当てですか?私はJSで同様のパターンを見たことがありますが、実際にどのように動作するのか分かりませんでした。どんな説明も役立ちます。NodeJsで渡された変数request.on

request.on("data",function(chunk){ 
     response.write(chunk.toString().toUpperCase()) ; 
    }) 

答えて

1

(要求オブジェクト内)リクエスト・オブジェクトに"data"イベントをemitsコードは、イベントハンドラにチャンクパラメータを渡します。 、その後に"data"イベントのためにあなたが登録したイベントハンドラを引き起こし

request.emit("data", chunk); 

:requestオブジェクトがeventEmitterから継承しているので、いくつかのデータの可用性を発表したいリクエストオブジェクト内のコードは、このような何かを行います引数としてchunkで呼び出されます。

これはJavascriptのイベントハンドラと同じです。イベントをトリガするコードは、イベントハンドラの引数を設定します。ここでやっていることに渡されるものと一致する引数を持つイベントハンドラ関数を宣言する必要があります。

これは、Javascriptでコールバック関数がどのように機能するかです。コールバックを呼び出すシステムは、コールバックが送信される引数を決定します。コールバックをそれに合わせて宣言し、そのコールバックをコールするシステムに登録します(将来はいつか)。この場合、EventEmitterであるため、.on()で登録してください。それ以外の場合は、他の方法で登録することもできます(約束のように、.then()または.catch()を使用します)。

+0

これですべて説明されています。今すぐすべてクリア – OAH