我试图让我的函数返回http get请求,然而,无论我做什么,它似乎都会在?范围我刚加入诺德.所以任何帮助都将不胜感激

function getData(){
  var http = require('http');
  var str = '';

  var options = {
        host: 'www.random.org',
        path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
  };

  callback = function(response) {

        response.on('data', function (chunk) {
              str += chunk;
        });

        response.on('end', function () {
              console.log(str);
        });

        //return str;
  }

  var req = http.request(options, callback).end();

  // These just return undefined and empty
  console.log(req.data);
  console.log(str);
}

推荐答案

当然,您的日志(log)返回undefined:您在请求完成之前登录.问题不在于范围,而在于asynchronicity.

http.request是异步的,这就是它将回调作为参数的原因.在回调中执行您必须执行的操作(您传递到response.end的回调):

callback = function(response) {

  response.on('data', function (chunk) {
    str += chunk;
  });

  response.on('end', function () {
    console.log(req.data);
    console.log(str);
    // your code here if you want to use the results !
  });
}

var req = http.request(options, callback).end();

Node.js相关问答推荐

NodeJS缓冲区大小逻辑:为什么默认是8KB,而不仅仅是数据大小?

Puppeteer 在本地运行良好,但在 Heroku 中运行不佳

当API返回400状态代码时,使用Reactjs fetch获取错误消息

在构建完成后,将AddedFiles文件夹的内容复制到dist文件夹

Docker node_modules 文件夹上的 React 应用程序不可用

如何在 Docker 容器中 SSO 登录 AWS(使用 aws-sdk v3)

如何使用填充在mongoose 上保存新数据

来自 child_process.exec 的错误没有这样的设备或地址,管道有帮助.为什么?

在express js模型中将js转换为Typescript 时Typescript 错误

当我使用 uuid 代码意外崩溃,然后工作正常?

在 Passport 策略回调中获取请求对象

如何正确使用 package.json 中的关键字属性?

Node.js + Express 上的多个视图路径

如何在 MongoDB 中查询引用的对象?

chart.js 无法创建图表:无法从给定项目获取上下文

tsconfig.json 中模块类型的区别

Node应用程序中相同npm包的两个版本

如何从 Node.js 中的 URL 获取

使用 Monit 而不是基本的 Upstart 设置有什么好处?

避免在弹性 beantalk 中重建 node_modules