0
我对nodejs相当陌生,我有一个场景,当用户点击一个端点时,我需要进行两个post调用。第一个API调用返回给我一个我应该在第二次调用中使用的URL。这是我写过的用于完成这些后期调用的通用模块。多个请求覆盖变量值
// First call
requester.post(options1).then(function(result1){
var options2 = {
url: result1.url,
req: req,
res: res
}
...
// Second Call
requestor.post(options2).then(function(result2) {
})
})
var requestor = {
post: function(options) {
url = options.url;
...
var deferred = q.defer();
...
var post = request.post(url, data, function (error, response, body) {
if (!error && response.statusCode == 200) {
try {
deferred.resolve(body);
}
catch(e) {
deferred.reject(new Error('Request failed while processing request'));
}
} else {
deferred.reject({code: code});
}
})
...
return deferred.promise;
}
}
我的问题是,当我有两个请求在确切的微秒进来时,url变量被覆盖。虽然第一个请求的“第二次调用”仍在进行中(并且在我的情况下最终会超时),但第二次请求的第二次调用将覆盖url变量。请建议我应该修复/更改。