Hallo,
die for ... of Variante hat auch den Vorteil, dass bei Bedarf await, continue, break, etc. zur Verfügung stehen. Mit forEach wäre ich immer sehr vorsichtig bzw. würde immer .map() bevorzugen. Mit dem Spread Operator (...) kann man die FileList elegant in ein Array wandeln. Und da ich weiter oben etwas von Lesbarkeit gelesen habe, würde ich die asynchronen Dinge fein säuberlich auslagern ;-)
Also etwa so:
async function dateiauswahl(evt) {
const fileArray = [...evt.target.files];
// den Speicher schonend nacheinander einlesen
for(const file of fileArray) {
let fileText = await dateiLesenAsync(file);
// conntinue, break, etc. sind verfügbar
}
// oder alles auf einmal
let fileTextArray = await Promise.all(fileArray.map(file => dateiLesenAsync(file)));
}
async function dateiLesenAsync(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function () {
resolve(reader.result);
}
reader.onerror = function (error) {
reject(error)
};
reader.readAsText(file);
});
}