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

时间:2013-06-25 16:33:00

标签: javascript json node.js express request

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

  • 处理来自网络客户端的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?
    }
})

1 个答案:

答案 0 :(得分:1)

您可以直接返回回复,因此您可以在以下位置发表评论:

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

这种方法的问题是你的客户端请求将等待第二个服务的响应,如果必须这样做就没问题。请注意您可能造成的延迟。

还要确保在出现错误的情况下也会返回回复。

这看起来很简单,如果我不完全理解你的问题,请告诉我。

干杯。

的Vitor。