async.each बहुत उपयोगी और शक्तिशाली समारोह जो Async लिब 3 क्षेत्रों 1-संग्रह/सरणी है .it 2- यात्रा 3-कॉलबैक द्वारा प्रदान की गई है संग्रह को सरणी या वस्तुओं के संग्रह के संदर्भ में संदर्भित किया जाता है और पुनरावृत्ति प्रत्येक पुनरावृत्ति को संदर्भित करती है और कॉलबैक वैकल्पिक है। यदि हम कॉलबैक दे रहे हैं तो यह प्रतिक्रिया वापस कर देगा या परिणाम देगा जो आप अग्रिम में आपको दिखाना चाहते हैं
समानांतर में प्रत्येक आइटम को फ़ंक्शन इटेटेट को लागू करता है। Iteratee सूची से एक आइटम के साथ बुलाया जाता है, और जब यह समाप्त हो गया है के लिए एक कॉलबैक कहा जाता है। अगर iteratee अपने कॉलबैक में कोई त्रुटि गुजरता है, तो मुख्य कॉलबैक (प्रत्येक फ़ंक्शन के लिए) को तुरंत त्रुटि के साथ बुलाया जाता है।
नोट, चूंकि यह फ़ंक्शन समानांतर में प्रत्येक आइटम को लागू करता है, इस बात की कोई गारंटी नहीं है कि इटारेट फ़ंक्शन क्रम में पूरा हो जाएंगे।
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);
}
});
}
});
धन्यवाद @stewe मुझे पता था कि यह कुछ आसान था! सम्मान, बेन। – Ben
उपरोक्त कोड प्रत्येक पुनरावृत्ति के लिए 'कॉलबैक' फ़ंक्शन नहीं करता है? यह कुछ 'गिनती ++ की तरह होना चाहिए; यदि (dataObj.length == गिनती) कॉलबैक(); 'जहां नया चर' var count = 1; '' async.forEach' लूप को कॉल करने से पहले घोषित किया गया है ?? –
इसके लिए बहुत बहुत धन्यवाद! –