場景: 我有一堆需要依次更改的firebase數據,如果出現問題,我需要停止進一步處理。nodejs中的async.waterfall問題
策略: 使用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