Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么从response.on(“end”,callback)打印数据与从response.on(“data”,callback)打印数据不同?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么从response.on(“end”,callback)打印数据与从response.on(“data”,callback)打印数据不同?

Javascript 为什么从response.on(“end”,callback)打印数据与从response.on(“data”,callback)打印数据不同?,javascript,node.js,Javascript,Node.js,我正在处理LearnyYouNode的HTTP客户端分配 我想知道为什么控制台记录来自响应的数据。on(“end”,callback)只输出预期输出的最后一部分,而控制台记录来自响应的数据。on(“data”,callback)输出整个响应 这是我对前者的代码: var http=require("http"); http.get(process.argv[2], function(response){ var str; response.setEncoding('utf-8')

我正在处理LearnyYouNode的HTTP客户端分配

我想知道为什么控制台记录来自响应的数据。on(“end”,callback)只输出预期输出的最后一部分,而控制台记录来自响应的数据。on(“data”,callback)输出整个响应

这是我对前者的代码:

var http=require("http");
http.get(process.argv[2], function(response){
    var str;
    response.setEncoding('utf-8');
    response.on("error",function(error){
        console.log(error);
    });
    response.on("data", function(data){
        str=data;
    });
    response.on("end", function(){
        console.log(str);
    });

}).end();
结果表明:

                 ACTUAL                                 EXPECTED                
───────────────────────────────────────────────────────────────────────

   "Veg out"                           !=    "Bodgy"                            
   ""                                  !=    "Chuck a sickie"                   
                                       !=    "Cook"                             
                                       !=    "Dag"                              
                                       !=    "Larrikin"                         
                                       !=    "Hit the turps"                    
                                       !=    "Counter meal"                     
                                       !=    "Hottie"                           
                                       !=    "Veg out"                          
                                       !=    ""                                 

──────────────────────────────────────────────────────────────────────
response.on(“data”,callback)的代码如下:

结果是:

                 ACTUAL                                 EXPECTED                
────────────────────────────────────────────────────────────────────────────────

   "Amber fluid"                       ==    "Amber fluid"                      
   "Ankle biter"                       ==    "Ankle biter"                      
   "Bities"                            ==    "Bities"                           
   "Slabs"                             ==    "Slabs"                            
   "Captain Cook"                      ==    "Captain Cook"                     
   "Galah"                             ==    "Galah"                            
   "Battler"                           ==    "Battler"                          
   "Sickie"                            ==    "Sickie"                           
   "Chook"                             ==    "Chook"                            
   "Going off"                         ==    "Going off"                        
   ""                                  ==    ""                                 

────────────────────────────────────────────────────────────────────────────────
前一个代码只记录最后一个元素。为什么会这样


谢谢

下面是一篇关于HTTP请求如何工作的好文章

当你这样做的时候

response.on("data", function(data) {
  str = data;
});
用新的数据块替换
str
的值。所以在
结束时
,您可以

response.on("end", function() {
  console.log(str);
});
其中,
str
表示接收到的最后一块数据。您希望按如下方式连接接收到的所有数据:

response.on("data", function(data) {
  str += data;
});
response.on("data", function(data) {
  str += data;
});