3
我试图建立一个处理服务器端的节点异步响应
- 处理来自Web客户端的GET请求一个简单的节点服务
- 解析提交的PARAMS
- 使用这些PARAMS查询另一个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?
}
})
好吧,我看到 - 我只是觉得很奇怪,这个匿名函数的范围如何? – mjr
也是在服务器端进行阻塞或者对服务器性能不好的做法? – mjr
** 1)**我刚刚收到我发现的第一个链接之一:http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/ 。内部作用域可以看到外部作用域(99%),但反之不起作用。这就是为什么你会首先使用匿名函数。使用函数引用不会让你这样做。 ** 2)**好吧,如果你必须这样做,并且如果你保证你快速失败,以防第二次服务很慢,那应该没问题。作为服务提供商,您公开了一个API,您在后面执行的操作取决于您,并且大多数服务都会有后续调用。 – bitoiu