ich async.mapLimit bin mit ein paar Gleichzeitigkeit Verfahren auf einem Array mit Grenze von 10 zu machen:den Parameterfehler Verwendung zu fehlgeschlagenen Prozess des in async.mapLimit trennen
async.mapLimit(files, 10, function(file, callback) {
... etc...
}, function(error, files) {
... etc..
});
Im Inneren der Hauptfunktion, ich bin einen Asynchron-Betrieb mit child_process ausgeführt wird, und wenn alles geschehen, wie es sollte, ich nenne nur den Rückruf:
callback(null, files);
Aber ... wenn etwas Schlimmes passiert, muss ich auch den Rückruf rufen sie die Datei vorbei, weil ich don Ich will alles beenden, ich ordne nur die Datei mit einer Fehlereigenschaft zu und rufe den Callb auf ack:
file.error = error;
callback(null, file);
Also, wenn der zweite async.mapLimit Rückruf ausgelöst wird, habe ich eine Reihe von Dateien:
, function(error, files) {
console.log(files);
});
Ausgang:
[
{
name: 'file_2',
error: 'something'...
},
{
name: 'file_1',
...etc
}
]
die Also brauchen, ich trennen Dateien, die fehlgeschlagen ist, zu tun:
var failedFiles = [];
var okFiles = [];
files.forEach(function(file) {
if (file.error)
failedFiles.push(file);
else
okFiles.push(file;
});
I w möchte wissen, ob es nicht möglich ist, die Dateien zurückzugeben, die als Array fehlgeschlagen sind, und dann auf den Parameterfehler des zweiten async.mapLimit-Callbacks zugreifen kann.
Vielen Dank im Voraus :).
Perfect! Ich benutzte dies mit Map-Limit und ich war mit diesem Gefühl "etwas stimmt nicht" .. hahaha –