我有這樣的代碼:父的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'完全不可訪問(事實並非如此),那麼你會得到一個參考錯誤。 –