我正在尝试将从数据事件中接收到的字符串字符存储到k
,但似乎k
仅在.on函数中是持久的,而在函数之外
var http = require('http');
var url = process.argv[2];
http.get(url, function(res){
k = [];
res.on('data', function(data){
//console.log(data.toString());
k.push(data.toString());
console.log(k); // k stores a list string when .on is called
});
console.log(k); // k is empty
});
我在了解此行为及其解决方法时遇到了麻烦,我们将不胜感激
谢谢
最佳答案
没有var语句,您将泄漏到global.k,但是可变范围不是问题。您的问题是时间。您的console.log(k); // k is empty
在任何数据进入之前就已经在运行,因此它当然是空的。您只需要等待,直到拥有所有数据,并且res触发结束事件。
var http = require('http');
var url = process.argv[2];
http.get(url, function(res){
var k = [];
res.on('data', function(data){
k.push(data.toString());
console.log(k); // k stores a list string when .on is called
});
res.on('end', function() {
console.log(k); // k is full :)
});
});