在http调用之外获取结果

时间:2019-01-13 09:11:55

标签: node.js json heroku httprequest dialogflow

在我们的项目中,我们使用HTTP请求通过Node调用REST Web服务。将结果登录到控制台后,我们可以看到结果。但是我们想存储它或在HTTP请求之外使用它。我们该如何实现?

var http = require('http');

var options = {
  host: 'http:\\example.com',
  port: 80,
  path : '/site/status?tag=A7351&date=09JAN&name=LASTNAME',
  method : 'GET'
};

var result;

http.request(options, function(res){
  var body = '';

  res.on('data', function (chunk) {
    body += chunk;
  });
  res.on('end', function () {
    result = JSON.parse(body);
    console.log(result, "INSIDE"); //Shows the JSON result
  });
}).end();

console.log(result, "OUTSIDE"); //Shows Undefined

结果采用以下格式:

{
  error: 0,
  statut: 'STATUTTTTT',
  origine: 'PLACEEE',
  destination: 'PARIS',
  onwardDate: null
}

我们需要能够在HTTP调用之外获取结果。

1 个答案:

答案 0 :(得分:0)

问题是您正在进行异步调用,但未正确处理它。 Dialogflow的库要求在进行异步调用时返回Promise。

最简单的解决方案是让您从使用请求库切换为使用request-promise-native库并返回Promise。

有关示例和更多信息,请参见堆栈溢出上的other answers