2016-03-30 6 views
0

Warum async.jseach funktioniert noch ohne callbackAsync.js weiterhin jeweils ohne Rückruf

var async = require('async'); 

var arr = ['a', 'b', 'c', 1, 2, 3]; 

async.each(arr, function(item, callback) { 
    console.log(item); 
}, function(error) { 
    if (error) console.log(error); 
}); 

als Folge Aufruf ich in Terminal jedes Array-Element sehen, aber als ich das sollte nicht sein zu verstehen, bis callback Aufruf , Recht?

Antwort

1

async.each ruft einfach den Rückruf "loop body" für jedes Element im Array auf. Wenn sie asynchron sind, werden sie gleichzeitig ausgeführt.

Sie kommen nie in Ihren endgültigen Rückruf, da Ihre "asynchronen Aufgaben" für immer ausstehend bleiben, ohne jemals callback zu rufen. Das ist das eigentliche Problem mit Ihrem Code.

Wenn Sie das nächste Element erst anzeigen möchten, nachdem das vorherige Element callback aufgerufen hat, sollten Sie stattdessen async.eachSeries verwenden.