3
我用的帆,水線和異步庫如何使一個for循環的工作與async.parallel()
function Outerfunction(listOfProducts) {
var salesOrderId = 1; //some id
var prom = [];
for (var i = 0; i < listOfProducts.length; i++) {
var qty = listOfProducts[i].quantity;
var prod = listOfProducts[i].productName;
var update = function(qty, prod, SalesOrderId) {
CardImages.update({
where: {
productName: prod,
isSold: false,
readyToSell: true
}
}, {
order: SalesOrderId,
isSold: true
})
.exec(function(err, updatedRecords) {
if (err) return err;
return updatedRecords;
});
}
prom.push(update);
}
async.parallel(prom, function(err, result) {
//this callback never gets called
console.log("database calls done");
});
}
我試圖用一個for循環來更新數據庫,此代碼工作正常,並更新數據庫,但但我的回調async.parallel
不會在所有記錄更新時被調用。
'async.parallel'確實需要一個*函數*的數組。什麼'exec'返回?假設你已經用[promise]標記了這個,你似乎期望它返回一個promise(只有當你沒有回調'exec'時)纔會返回一個promise--所以你想使用'Promise.all(prom).then ...)',並且不應該使用async.js! – Bergi
或 堅持'async', 清除承諾的任何概念, 將成員名稱「proms」更改爲「tasks」, 修改推送到'tasks'的函數以符合[文檔](https:// github.com/caolan/async#parallel) –
而不是使用for循環我用了一個函數,一個計數器和一個回調,但它很慢,我仍然在尋找一個解決方案:) –