如何在 nodejs 中维护事件循环中的持久数据
How to maintain persistant data from event loop in nodejs?
我正在尝试将从数据事件接收的字符串字符存储到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 :)
});
});
问题在于时机,而不是范围。 最终的 console.log
语句在挂接事件侦听器后立即运行,即在侦听器函数运行之前。 您需要在 end
事件的侦听器中对完整数组k
执行任何工作:
res.on('end', function(){
console.log(k);
});
-
尝试在十进制 k 时输入 var:
http.get(url, function(res){ var k = []; // intialize k with var. 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 });
-
尝试将 k 声明为全局变量。
var http = require('http'); var url = process.argv[2]; var k = []; // initialize k here. http.get(url, function(res){ 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 });
相关文章:
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- 如何使用React JS中的循环,根据条件渲染或不渲染表数据
- 在Jade中循环并显示来自Mongodb的数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用来自不同循环Javascript的数据创建数组
- Json在js中对数据循环进行编码
- Emberjs#每个循环不处理数组数据
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- 当JSON数据=变量时,需要执行循环
- 如何在php循环中显示隐藏的数据类型
- 我的复选框没有't使用的循环来显示数据
- 按数据属性循环元素并替换值
- AngularJS和Javascript大数据循环性能
- 返回离子项的 ajax 数据循环
- Codeigniter Jquery Ajax:如何将返回的数据循环为 html
- 通过Three.js中的getImageData像素颜色数据循环生成多个立方体
- 没有小数的数据循环的Javascript计算
- 通过json数据循环创建下拉列表
- 获取json数据循环
- 优化数据循环