Async: forEachOf - callback final não sendo chamado

Criado em 29 jun. 2015  ·  1Comentário  ·  Fonte: caolan/async

EDITAR: Problema resolvido (falei muito cedo!) ... (veja abaixo)

Estou usando o método .forEachOf para lançar um retorno de chamada após a iteração por meio de um determinado objeto. O único problema é que o retorno de chamada final passado como o terceiro argumento para forEachOf nunca parece ser lançado.

Aqui está um exemplo de código do 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);
});

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

Eu poderia estar fazendo algo totalmente errado aqui, mas postei esta questão para / r / node no reddit e Stack Overflow , e não obtive respostas úteis. O que eu estou fazendo errado aqui? Isto está me deixando louco!!!

EDIT: Parece que neste exemplo inicial, eu esqueci de adicionar uma instrução 'return callback ()'. No exemplo específico em que realmente encontrei esse problema em meu código, tenho um segundo método assíncrono no qual faço esta instrução 'return callback ()'. Parece que vou precisar usar outro recurso de fluxo de controle para chamar o retorno de chamada assim que o segundo método assíncrono terminar de ser executado. Me desculpe. Por favor, feche este problema o mais rápido possível !!!

Por outro lado, acredito que será útil para outros usuários futuros que usam esse método saber como usar corretamente a instrução 'return callback ()'. A documentação definitivamente está faltando nesta área, e não há muito lá fora sobre métodos individuais nesta biblioteca como está, então encontrar ajuda é incrivelmente lento, tedioso e difícil!

question

Comentários muito úteis

cara, você precisa chamar 'callback ()' após cada iteração.

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

>Todos os comentários

cara, você precisa chamar 'callback ()' após cada iteração.

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);
    anArray.push(elem);
callback() //<<<<<<<<<
},...
Esta página foi útil?
0 / 5 - 0 avaliações