在 http 调用之外获取结果

Posted

技术标签:

【中文标题】在 http 调用之外获取结果【英文标题】:Get the result outside of the http call 【发布时间】:2019-06-07 14:39:48 【问题描述】:

在我们的项目中,我们使用 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 调用之外获得结果。

【问题讨论】:

How do I return the response from an asynchronous call?的可能重复 感谢您的回复@jonrsharpe。作为一个新手不知道如何使用异步调用。你能指导我完成它吗?这是我在开发中的第一个项目...... 【参考方案1】:

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

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

有关示例和更多信息,请参阅 Stack Overflow 上的 other answers。

【讨论】:

以上是关于在 http 调用之外获取结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在字符串缓冲区输入循环之外获取http请求的输入流结果

使用java传参调用exe并且获取程序进度和返回结果的一种方法

从转换中获取结果顶点?

获取 异步执行调用的结果

Python 怎么从定义的函数之外调用其中的变量

如何在调用 python 脚本时捕获 python 脚本的结果? [复制]