我试图将从 on 数据事件接收到的字符串字符存储到 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
在任何数据进入之前正在运行,所以当然它是空的。您只需要等待,直到获得所有数据并且资源会触发结束事件。
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 :)
});
});
关于javascript - 如何在nodejs中维护事件循环的持久数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27682389/