Сценарий: У меня есть куча данных базы данных, которые необходимо изменить последовательно, и если что-то не получается, мне нужно прекратить дальнейшую обработку.Проблема с async.waterfall в nodejs
Стратегия: Использование async.waterfall. Таким образом, я могу передавать переменные по мере необходимости на следующую итерацию и сбои сигналов.
Вопрос: Когда у меня есть три или более элемента данных для изменения, я застреваю после второго элемента, пытаясь сделать обратный вызов.
Код:
var processData = function(<params>) {
var funcArray = [];
funcArray.push(processItemInitial);
for(var i = 0; i < length - 1; i++) {
funcArray.push(processItem);
}
async.waterfall(funcArray, function (err, status) {
console.log("status: " + status);
console.log("err: " + err);
});
}
//uses global variable
var processItemInitial = function (callback) {
productsRef.child(<some var>).child('quantity').transaction(function(data){
if(data != null) {
//do stuffs
} else {
console.log("null data");
}
return data;
}).then(function() {
callback(<params>);
});
}
// uses variables passed through call backs
var processItem = function (<params>) {
productsRef.child(<some var>).child('quantity').transaction(function(data){
if(data != null) {
//do stuffs
} else {
console.log("null data");
}
return data;
}).then(function() {
callback(<params>);
});
}
Это помогло мне отладить проблему в моем коде. Я получал исключение, которое я не видел, так как я его не ловил. – Ahsan