Async: forEachOf - последний обратный вызов не вызывается

Созданный на 29 июн. 2015  ·  1Комментарий  ·  Источник: caolan/async

РЕДАКТИРОВАТЬ: проблема решена (я заговорил слишком рано!) ... (см. Ниже)

Я использую метод .forEachOf для вызова обратного вызова после итерации по заданному объекту. Единственная проблема заключается в том, что последний обратный вызов, переданный как третий аргумент forEachOf, никогда не генерируется.

Вот пример кода проблемы:

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

Вот он на Runnable: http://code.runnable.com/VZELB92Qa1Y7JQuq/async-foreachof-node-js-not-working-2-for-callback

Я мог делать здесь что-то совершенно не так, но я разместил этот вопрос в / r / node на Reddit и Stack Overflow и не получил никаких полезных ответов. Что я здесь делаю не так? Это сводит меня с ума !!!

РЕДАКТИРОВАТЬ: Кажется, что в этом начальном примере я забыл добавить оператор return callback (). В конкретном примере, где я действительно столкнулся с этой проблемой в своем коде, у меня есть второй асинхронный метод, в котором я делаю этот оператор return callback (). Похоже, мне нужно использовать другую функцию потока управления для вызова обратного вызова после завершения работы второго асинхронного метода. Мои извинения. Пожалуйста, закройте этот вопрос как можно скорее !!!

С другой стороны, я считаю, что другим будущим пользователям, использующим этот метод, будет полезно знать, как правильно использовать оператор return callback (). Документация в этой области определенно отсутствует, и в этой библиотеке не так много информации об отдельных методах как есть, поэтому поиск помощи невероятно медленный, утомительный и трудный!

question

Самый полезный комментарий

чувак, тебе нужно вызывать callback () после каждой итерации.

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

>Все замечания

чувак, тебе нужно вызывать callback () после каждой итерации.

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);
    anArray.push(elem);
callback() //<<<<<<<<<
},...
Была ли эта страница полезной?
0 / 5 - 0 рейтинги