async.each è molto utile e potente funzione offerta da Async Lib .it ha 3 campi 1-collection/array 2- iterazione 3 callback la raccolta è riferita alla matrice o collezione di oggetti e l'iterazione si riferisce a ciascuna iterazione e la richiamata è facoltativa. in caso di callback, restituirà la risposta o pronuncerà il risultato che si desidera mostrare nel frontend
Applica la funzione iteratee a ciascun elemento in coll, in parallelo. L'iteratee viene chiamata con un elemento dall'elenco e una richiamata per quando è finita. Se l'iterate passa un errore al suo callback, il callback principale (per ciascuna funzione) viene immediatamente chiamato con l'errore.
Nota: poiché questa funzione applica iteratee a ciascun elemento in parallelo, non è possibile garantire che le funzioni iteratee vengano completate in ordine.
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);
}
});
}
});
Grazie @stewe sapevo che era qualcosa di semplice! Saluti, Ben. – Ben
Il codice sopra non chiama la funzione 'callback' per ogni iterazione? Dovrebbe essere qualcosa come 'count ++; if (dataObj.length == count) callback(); 'dove la nuova variabile' var count = 1; 'è dichiarata prima di chiamare il ciclo 'async.forEach' ?? –
Grazie mille per questo! –