Async: forEachOf: no se llama a la devolución de llamada final

Creado en 29 jun. 2015  ·  1Comentario  ·  Fuente: caolan/async

EDITAR: Problema resuelto (¡hablé demasiado pronto!) ... (mira abajo)

Estoy usando el método .forEachOf para lanzar una devolución de llamada después de iterar a través de un objeto dado. El único problema es que la devolución de llamada final pasada como tercer argumento a forEachOf nunca parece lanzarse.

Aquí hay un código de muestra del problema:

var async = require('async');

var anArray = [];

var testObj = {
    'a': '1',
    'b': '2',
    'c': '3'
};

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);

    anArray.push(elem);
}, function (err) {
    if (err) {
        console.error(err.message);
    }

    console.log("This line should be printed at the end.", anArray);
});

Aquí está en Runnable: http://code.runnable.com/VZELB92Qa1Y7JQuq/async-foreachof-node-js-not-working-2-for-callback

Ahora podría estar haciendo algo totalmente mal aquí, pero publiqué esta pregunta en / r / node en reddit y Stack Overflow , y no obtuve respuestas útiles. ¿Qué estoy haciendo mal aquí? ¡¡¡Esto me está volviendo loco!!!

EDITAR: Parece que en este ejemplo inicial, olvidé agregar una declaración 'return callback ()'. En el ejemplo particular en el que me encontré con este problema en mi código, tengo un segundo método asincrónico en el que hago esta declaración 'return callback ()'. Parece que tendré que usar otra función de flujo de control para llamar a la devolución de llamada una vez que el segundo método asincrónico haya terminado de ejecutarse. Mis disculpas. ¡Cierre este problema lo antes posible!

Por otro lado, creo que será útil para otros usuarios futuros que utilicen este método saber cómo utilizar correctamente la declaración 'return callback ()'. Definitivamente falta documentación en esta área, y no hay mucha información sobre métodos individuales en esta biblioteca tal cual, por lo que encontrar ayuda es increíblemente lento, tedioso y difícil.

question

Comentario más útil

amigo, debes llamar a 'callback ()' después de cada iteración.

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);
    anArray.push(elem);
callback() //<<<<<<<<<
},...

>Todos los comentarios

amigo, debes llamar a 'callback ()' después de cada iteración.

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);
    anArray.push(elem);
callback() //<<<<<<<<<
},...
¿Fue útil esta página
0 / 5 - 0 calificaciones