在我们的项目中,我们使用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调用之外获取结果。
答案 0 :(得分:0)
问题是您正在进行异步调用,但未正确处理它。 Dialogflow的库要求在进行异步调用时返回Promise。
最简单的解决方案是让您从使用请求库切换为使用request-promise-native库并返回Promise。
有关示例和更多信息,请参见堆栈溢出上的other answers。