Async: forEachOf - letzter Rückruf wird nicht aufgerufen

Erstellt am 29. Juni 2015  ·  1Kommentar  ·  Quelle: caolan/async

EDIT: Problem behoben (ich habe zu früh gesprochen!) ... (siehe unten)

Ich verwende die .forEachOf-Methode, um einen Rückruf nach dem Durchlaufen eines bestimmten Objekts auszulösen. Das einzige Problem ist, dass der letzte Rückruf, der als drittes Argument an forEachOf übergeben wurde, niemals ausgelöst zu werden scheint.

Hier ist ein Beispielcode für das Problem:

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

Hier ist es auf Runnable: http://code.runnable.com/VZELB92Qa1Y7JQuq/async-foreachof-node-js-not-working-2-for-callback

Jetzt könnte ich hier etwas völlig falsch machen, aber ich habe diese Frage in / r / node auf reddit und Stack Overflow gepostet und keine hilfreichen Antworten erhalten. Was mache ich hier falsch? Das macht mich wahnsinnig !!!

EDIT: Es scheint, als hätte ich in diesem ersten Beispiel vergessen, eine 'return callback ()' - Anweisung hinzuzufügen. In dem speziellen Beispiel, in dem ich tatsächlich auf dieses Problem in meinem Code gestoßen bin, habe ich eine zweite asynchrone Methode, in der ich diese Anweisung 'return callback ()' mache. Es scheint, als müsste ich eine andere Kontrollflussfunktion verwenden, um den Rückruf aufzurufen, sobald die zweite asynchrone Methode ausgeführt wurde. Entschuldigen Sie. Bitte schließen Sie diese Ausgabe so schnell wie möglich !!!

Andererseits glaube ich, dass es für andere zukünftige Benutzer, die diese Methode verwenden, hilfreich sein wird, zu wissen, wie die Anweisung 'return callback ()' richtig verwendet wird. Die Dokumentation fehlt definitiv in diesem Bereich, und es gibt nicht viel über einzelne Methoden in dieser Bibliothek, so wie es ist, Hilfe zu finden ist unglaublich langsam, mühsam und schwierig!

question

Hilfreichster Kommentar

Alter, du musst nach jeder Iteration 'callback ()' aufrufen.

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

>Alle Kommentare

Alter, du musst nach jeder Iteration 'callback ()' aufrufen.

async.forEachOf(testObj, function (elem, key, callback) {
    console.log(elem);
    anArray.push(elem);
callback() //<<<<<<<<<
},...
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen