Javascript 为什么从response.on(“end”,callback)打印数据与从response.on(“data”,callback)打印数据不同?
我正在处理LearnyYouNode的HTTP客户端分配 我想知道为什么控制台记录来自响应的数据。on(“end”,callback)只输出预期输出的最后一部分,而控制台记录来自响应的数据。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')
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;
});