2016-04-16 5 views
0

ドキュメントはresponse.end([data][, encoding][, callback])を定義し、状態:node.js `response.end`イベントはオプションの` data`と `encoding`パラメータを送信しますか?

データが指定されている場合、それはResponse.Endの(コールバック)、続いてのResponse.Write(データ、 符号化)を呼び出すことと等価です。

私が正しくendイベントを使用していますか、それは非常に低い誰でもendイベントにデータを渡すでしょうか?

var http = require('http'); 

http.get(
    process.argv[2], 
    function (response) { 
     response.setEncoding('utf8'); 
     response.on('error', console.error); 
     response.on('data', console.log); 

     // Check for data and exit on 'end' event 
     response.on(
      'end', 
      function (data, encoding) { 
       if (null != data) { 
        console.log(data.toString(encoding)); 
       } 
       return; 
      } 
     ); 
    } 
); 
+0

オンエンドでデータを確認できますか? – JordanHendrix

+0

私の具体的な例では、渡されなかった場合と同じように 'undefined'です。これはオプションなので、私はこれを期待していました。 – Zak

答えて

0

response.on('end'...)応答にそれ以上データが存在しないことが示されました。

dataは、ドキュメントに記載されているようにチャンクで送信されます。それは読むことができるストリーム、on('end')あなた自身のデータを渡すことができます、あなたはそこに簡単なテキストを持つことができますそれはそう書かれるものです:

文書は本質的にこれを行う方法の2つを説明しています。

例:

response.write('Hello World\n'); 
response.end(); 

OR 
response.end('Hello World\n'); 

は、一般的に、これは、少量のデータの罰金で言えば、しかし、あなたには言うことができますデータ、アレイを置くことができる場所ですresponse.on('data'...);で扱われるデータのチャンクと、その配列をresponse.on('end'...)に渡します。これは、より大きなチャンクされたデータに対して行うことをお勧めします。データがコールバックに記録されているかどうかを確認するのがよいでしょう。

編集:コメント欄にあなたの質問に

あなたのコードが正しい、および任意であり、それについてこのように考えて、あなたは、その機能に要求を何かを送って、それが応答を行い、その応答がチャンクに分割されている場合は、on(data)でこれらのチャンクを得ることができます。最後にon(end)を使用して返信することができます。

希望するものがあります。

+0

すばやく対応していただきありがとうございますが、私が上記のコードが正しいのか、それとも必要なのか、まだ混乱していますか? – Zak

+0

それは正しい、オプションで、このように考えて、あなたはその関数に何かを送り、要求を返します。レスポンスを返します。その大規模なものがチャンクに分割されている場合、それらのチャンクを(データ)あなたはその最後にそれを返すことができます。それは簡単です。 – JordanHendrix

+1

あなたの答えに向かって、あなたのより詳細な応答に先立って、それを動かすかどうかチェックします。 – Zak

関連する問題