foreachofseries - Node.js-Uso de async lib-async.foreach con objeto
node js async eachseries (2)
La función final no se llama porque async.forEach
requiere que llame a la función de callback
para cada elemento.
Usa algo como esto:
async.forEach(Object.keys(dataObj), function (item, callback){
console.log(item); // print the key
// tell async that that particular element of the iterator is done
callback();
}, function(err) {
console.log(''iterating done'');
});
Estoy usando el nodo async lib - https://github.com/caolan/async#forEach y me gustaría iterar a través de un objeto e imprimir su clave de índice. Una vez completado, me gustaría ejecutar una devolución de llamada.
Esto es lo que tengo hasta ahora, pero el ''iterating done''
nunca se ve:
async.forEach(Object.keys(dataObj), function (err, callback){
console.log(''*****'');
}, function() {
console.log(''iterating done'');
});
¿Por qué la función final no se llama?
¿Cómo puedo imprimir la clave de índice de objeto?
async.each es una función muy útil y potente que proporciona Async Lib .it tiene 3 campos 1-collection / array 2- iteration 3-callback la colección se refiere a la matriz o colección de objetos y la iteración se refiere a cada iteración y la devolución de llamada es opcional. si estamos dando una devolución de llamada, entonces devolverá la respuesta o dirá el resultado que desea mostrarle en la interfaz
Aplica la función iteratee a cada elemento en coll, en paralelo. El iteratee se invoca con un elemento de la lista y una devolución de llamada cuando termina. Si el iteradoe pasa un error a su devolución de llamada, la devolución de llamada principal (para cada función) se llama inmediatamente con el error.
Tenga en cuenta que, dado que esta función aplica iteratee a cada elemento en paralelo, no hay garantía de que las funciones de iteración se completen en orden.
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);
}
});
}
});