【问题标题】:Setting a variable to the request's response为请求的响应设置一个变量
【发布时间】:2017-11-13 06:04:21
【问题描述】:

我在 node.js 中使用 node-rest-client 或请求库对服务进行 API 调用。我希望能够使用 let 和 scoping 来捕获响应但是只能获取请求...

在下面的代码中,当我控制台记录 newrequest 时,它会记录请求数据,当我在函数内部并记录 info.check.id 时,它会记录正确的数据。

var request = require('request');

var options = {
  url: 'https://api.pingdom.com/api/2.1/checks/******',
  headers: {
    "App-Key": "******************"
  }
};

  function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
      var info = JSON.parse(body);
     // console.log(info);
     console.log(info.check.id)
     // console.log(response.info);
    }
    else { 
  //      console.log(body);
    }
  }

let newrequest = request(options, callback).auth('********', '********');

console.log(newrequest);

【问题讨论】:

  • 从回调中返回info
  • 在关闭函数之前将返回信息甚至基本字符串放在 if 语句或 if 语句之外,但不会改变记录 newrequest 的结果。

标签: node.js request httprequest


【解决方案1】:

此时:

console.log(newrequest);,

请求还没有响应,因为实际上还没有进行调用。由于节点的异步特性,请求只会在console.log(newrequest); 行之后发出。您将只能在回调中访问响应,实际上,回调的全部意义在于您可以处理响应。

【讨论】:

  • 这就是我认为它必须处理回调并且请求尚未处理的问题,但是返回数据的最佳方法是什么?
  • >什么是返回数据的最佳方式。回调应该在哪里返回数据?我假设这是您需要响应 http 请求的 API?如果是这种情况,您可以在定义路由处理程序的位置发布完整代码吗?
猜你喜欢
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 2021-04-11
相关资源
最近更新 更多