node foreachofseries example eachseries await async node.js loops object asynchronous node-async

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''); });

  1. ¿Por qué la función final no se llama?

  2. ¿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); } }); } });