async.each là rất hữu ích và chức năng mạnh mẽ được cung cấp bởi Async Lib .it có 3 lĩnh vực 1 thu/mảng 2- lặp 3-callback bộ sưu tập được gọi là mảng hoặc tập hợp các đối tượng và lặp lại là tham chiếu đến mỗi lần lặp lại và gọi lại là tùy chọn. nếu chúng tôi đang gọi lại thì nó sẽ trả về phản hồi hoặc nói kết quả mà bạn muốn hiển thị cho bạn trong giao diện người dùng
Áp dụng hàm iteratee cho từng mục trong coll, song song. Các iteratee được gọi với một mục từ danh sách, và một cuộc gọi lại khi nó đã kết thúc. Nếu iteratee chuyển một lỗi tới callback của nó, callback chính (cho mỗi hàm) được gọi ngay lập tức với lỗi. Lưu ý rằng vì chức năng này áp dụng lặp lại cho từng mục song song, nên không đảm bảo rằng các hàm lặp lại sẽ hoàn thành theo thứ tự.
exapmle-
var updateEventCredit = function (userId, amount ,callback) {
async.each(userId, function(id, next) {
var incentiveData = new domain.incentive({
user_id:userId,
userName: id.userName,
amount: id.totalJeeneePrice,
description: id.description,
schemeType:id.schemeType
});
incentiveData.save(function (err, result) {
if (err) {
next(err);
} else {
domain.Events.findOneAndUpdate({
user_id: id.ids
}, {
$inc: {
eventsCredit: id.totalJeeneePrice
}
},{new:true}, function (err, result) {
if (err) {
Logger.info("Update status", err)
next(err);
} else {
Logger.info("Update status", result)
sendContributionNotification(id.ids,id.totalJeeneePrice);
next(null,null);
}
});
}
});
Cảm ơn @stewe Tôi biết đó là một cái gì đó đơn giản! Trân trọng, Ben. – Ben
Mã trên không gọi hàm 'callback' cho mỗi lần lặp lại? Nó nên là một cái gì đó như 'đếm ++; if (dataObj.length == count) callback(); 'trong đó biến mới' var count = 1; 'được khai báo trước khi gọi vòng lặp" async.forEach'? –
Cảm ơn rất nhiều vì điều này! –