Javascript 在服务器端的节点中处理异步响应
我正在尝试构建一个简单的节点服务Javascript 在服务器端的节点中处理异步响应,javascript,json,node.js,express,request,Javascript,Json,Node.js,Express,Request,我正在尝试构建一个简单的节点服务 处理来自web客户端的GET请求 解析提交的参数 使用这些参数异步查询另一个REST服务 将REST服务结果返回到原始GET请求 我刚刚开始在node中进行异步编程,通常我很难理解如何在异步调用之间保留作用域 基本上-如何通过'req'将JSON服务'result'发送回原始GET请求 我使用的是Express,路由处理程序如下所示: exports.list = function(req, res){ var params = req.query; var
- 处理来自web客户端的GET请求
- 解析提交的参数
- 使用这些参数异步查询另一个REST服务
- 将REST服务结果返回到原始GET请求
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)
}
})
这种方法的问题是,您的客户机请求将挂起第二个服务的响应,如果必须这样做,这是可以的。只是要注意你可能造成的延迟
此外,还要确保在出现错误时,您也会返回响应
这似乎很简单,所以如果我没有完全理解你的问题,请告诉我
干杯
Vitor.好的,我明白了-我只是觉得这很奇怪,res在匿名函数中的作用域是什么?服务器端是否也会出现这种情况,或者服务器性能是否会出现问题?1)我刚刚找到了我找到的第一个链接之一:。内部范围可以看到外部范围(99%),但相反的范围不起作用。这就是为什么首先要使用匿名函数。使用函数引用不允许这样做。2) 好吧,如果你必须这样做,如果你保证在第二次服务很慢的情况下你会很快失败,那应该没问题。作为一个服务提供商,你公开一个API,你在后面做什么取决于你自己,大多数服务都会有后续调用。。。