javascript - 为什么 request.on() 在 Node.js 中不起作用

标签 javascript node.js stream node-request

我正在尝试使用 Node 请求模块从第三方服务获取一些数据,并从函数中将此数据作为字符串返回。我的看法是 request() 返回可读流,因为你可以执行 request(...).pipe(writeableStream) 这 - 我认为 - 意味着我可以做

function getData(){
    var string;

    request('someurl')
        .on('data', function(data){
             string += data;
        })
        .on('end', function(){
            return string;
        });
}

但这实际上行不通。我认为我对 request() 或 Node 流的真正工作方式有一些错误的认识。有人可以在这里消除我的困惑吗?

最佳答案

它确实按照您解释的方式工作。也许您面临的问题是由于 node.js 的异步性质造成的。我很确定您正在以同步方式调用 getData()。试试这个,看看你的 request 调用是否没有返回一些东西:

request('someurl')
  .on('data', function(data){
    console.log(data.toString());
  .on('end', function(){
    console.log("This is the end...");
  });

看看这篇文章here .它并不短,但它解释了如何编写代码来处理这种情况。

关于javascript - 为什么 request.on() 在 Node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477699/

相关文章:

javascript - addParameter javascript(用于xslt)函数不起作用

javascript - jquery 和 CSS3 转换

javascript - 为什么随机数量的 JSONP 请求会失败?

javascript - Express-Session 中的对象方法

node.js - Hexo可以生成PDF文件吗?

c# - C#读写文件的不同方式

php - 多客户端同步

javascript - 使用 JS 将网页元素保存为图像

c# - 从授权要求处理程序中的请求正文中读取会破坏路由

bash - 我可以从 bash 脚本中测试开放的标准输入流吗?