javascript - 如何在nodejs中维护事件循环的持久数据?

标签 javascript node.js asynchronous dom-events

我试图将从 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/

相关文章:

javascript - 如何将异步返回值保存在变量中?

JavaScript : object properties aren't recognized

node.js - 在树莓派 3 上安装 Electron js 时出现问题

javascript - 如何从 CI 构建管道发布 NPM 包并仍然自动化版本控制?

c# - 循环等待两件事?

javascript - 异步 Lambda 函数 : Returning promise or sending responseURL does not terminate CloudFormation custom resource invocation

javascript - 如何让我的图像显示在 codepen.io 中

javascript - 安全问题: Parsing HTML with XMLHttpRequest?

java - JSP 和外部 javascript 文件之间的交互

node.js - fluent-ffmpeg display_aspect_ratio 没有改变