ich diesen Code haben:NodeJS geordneten Funktion Variable erscheint in async.waterfall out of scope sein
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;
}
});
}
Die res
ist undefined
und ich irgendwie verstehen, warum, aber was ist der richtige Ansatz zu sein kann res
innerhalb der waterfall
verwenden?
Eine Lösung wäre, die Variable in allen Funktionen und allen Callbacks zu übergeben, aber das ist überhaupt nicht skalierbar und ich hasse eine solche Lösung. Ist es der einzige?
Eine andere Lösung wäre Res global für das gesamte Skript zu machen, wieder, fühlt sich nicht richtig an.
EDIT: res
undefiniert ist erst in den letzten Rekursion Anruf, das ich es nicht etwas sein, verstehen, dass res
Objekt abgelaufen ist? Ich benutze express
Rahmen und der letzte Anruf ist nach 60s passiert.
EDIT2:
Es ist alles meine Schuld, ich war mainProcess
auch von einer der Funktionen aufrufen, wenn Altersbereich nicht geeignet war. Das hat es kaputt gemacht. Das war ein Legacy-Code, der übrig blieb.
Wo genau ist "res" undefined? In 'res.send (" Erfolg: "+ Status);'? –
Hier: 'res.send (" Erfolg: "+ status);' –
Dann passierte etwas 'undefiniert' zu 'mainProcess'.Wenn "res" überhaupt nicht zugänglich ist (was nicht der Fall ist), würde ein Referenzfehler auftreten. –