Ich möchte die Bildpfade lesen, sie in Binärdaten konvertieren, einen Index anhängen und dann etwas anderes tun, nachdem alle Dateien konvertiert wurden. Ich habe den folgenden Code:Auflösen von Bluebird Versprechen für Array von Objekt
var bufferData = [];
for (var i = 0; i < imagePaths.length; i++) {
bufferData.push({
data: fs.readFileAsync(imagePaths[i]),
index: i
}
);
}
Promise.all(bufferData).then(function (data) {
console.log(data);
//do something
});
die
[ { data:
Promise {
_bitField: 134217728,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
index: 0 } ]
Es gibt scheint, wie das Versprechen, nicht innerhalb des buffer Objekt nicht gelöst wird. Was muss ich tun, um das Versprechen zu lösen?
Wenn ich
tunvar bufferData = [];
for (var i = 0; i < imagePaths.length; i++) {
bufferData.push(fs.readFileAsync(imagePaths[i]));
}
Promise.all(bufferData).then(function (data) {
console.log(data);
//do something
});
es zurück:
[ <Buffer ff d8 ff e1 18 b9 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 09 00 0f 01 02 00 06 00 00 00 7a 00 00 00 10 01 02 00 0e 00 00 00 80 00 00 00 12 01 03 00 ... > ]
das ist, was ich will, aber ich war nicht in der Lage, den Index anzuhängen.
Hallo, danke für die Korrektur. Deine Lösung macht Sinn und funktioniert. Ich möchte auch bemerken, dass Sie a) in der pufferData.push-Zeile verpasst haben. – user3559233
nicht sicher, warum Sie den Index so hätten ... 'data [n]' wäre das Ergebnis von 'imagePath [n]' versprechen - so scheint der Index redundant –
Ich wollte die Bilder indizieren, weil meine gedacht ist, dass die Dateien asynchron gelesen werden (so dass das 2. Bild vor dem 1. Bild gelesen werden kann) und ich möchte sie so ordnen, wie sie vom Bildpfad kommen. – user3559233