在服务器端的节点中处理异步响应

Handling asynchronous responses in node on server side

本文关键字:处理 异步 响应 节点 服务器端      更新时间:2023-09-26

我正在尝试构建一个简单的节点服务,

  • 处理来自web客户端的GET请求
  • 分析提交的参数
  • 使用这些参数异步查询另一个REST服务
  • 将REST服务结果返回到原始GET请求

我刚开始在节点中进行异步编程,通常我很难理解如何在异步调用之间保持作用域。

基本上,我如何通过"req"将JSON服务"result"发送回原始GET请求?

我使用的是Express和Request,路由处理程序看起来像:

exports.list = function(req, res){
var params = req.query;
var queryParam= params.queryParm;
var restURL =  "http://some-json-service.com?queryParam=" + queryParam;
var request = require('request');
request(restURL, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var result = JSON.parse(body);
        // ? How do I send result back to the req?
    }
})

您可以直接返回响应,因此在您有评论的地方,您将执行以下操作:

request(restURL, function (error, response, body) {
  if (!error && response.statusCode == 200) {
      var result = JSON.parse(body);
      res(result)
  }
})

这种方法的问题是,您的客户端请求将挂起来自第二个服务的响应,如果必须这样做,这是可以的。只要注意你可能造成的延误。

还要确保在出现错误的情况下也返回一个响应。

这似乎很简单,所以如果我没有完全理解你的问题,请告诉我。

干杯。

氟橡胶。