我有这样的代码:父的NodeJS功能的可调似乎超出范围在async.waterfall
function mainProcess(res) {
async.waterfall([
function(callback) {
postExportDefinition(requestParams, callback);
},
function(requestParams, callback) {
postSync(requestParams, callback);
},
function(requestParams, callback) {
checkSync(requestParams, callback);
},
function(body, callback) {
postUpdatedData(body, callback);
},
function(syncUri, callback) {
getSyncResponseInIntervals(syncUri, callback);
}
],
// the bonus final callback function
function(err, status) {
if (err) {
res.status(500)
.send({
error: "Error (best handling ever)"
});
return;
}
if (ageOffset < 100){
mainProcess();
}else{
res.send("Success: " + status);
console.log(status);
return;
}
});
}
的res
是undefined
和我有点明白为什么,但什么是正确的做法能够在waterfall
内使用res
?
一个解决方案是在所有函数和所有回调函数中传递变量,但这根本无法扩展,我讨厌这样的解决方案。它是唯一的吗?
另一种解决方案是将整个脚本制作为res全局,并且感觉不对。
编辑: res
是不确定的只是在最后的递归调用,我不明白,也可以是一些res
对象已经过期?我正在使用express
框架,最后一次调用在60s后发生。
EDIT2:
这都是我的错,我打电话mainProcess
也从功能之一,当年龄范围是不适合的。这打破了它。那是遗留下来的遗留代码。
确切地说'res' undefined'?在'res.send(“Success:”+ status);'? –
这里:'res.send(“Success:”+ status);' –
然后通过'undefined'传递给'mainProcess'。如果'res'完全不可访问(事实并非如此),那么你会得到一个参考错误。 –