JavaScript Array.fromAsync()-Methode
Beispiel
Ein Array aus einem Async-Iterable erstellen:
Selbst ausprobieren »
Definition und Verwendung
Array.fromAsync() ist eine relativ neue statische Methode in JavaScript, mit der du ein neues Array aus einem asynchronen Iterable, einem Iterable oder einem array-ähnlichen Objekt erstellen kannst. Diese Methode gibt ein Promise zurück, das zu einer neuen Array-Instanz aufgelöst wird.
Einfach ausgedrückt ist es die asynchrone Version von Array.from(), die speziell für die Verarbeitung asynchroner Datenquellen entwickelt wurde.
Grundlegende Syntax
Array.fromAsync(iterable)
Array.fromAsync(arrayLike)
Array.fromAsync(asyncIterable, mapFn)
Array.fromAsync(asyncIterable, mapFn, thisArg)
Parameterbeschreibung
asyncIterable: Ein asynchrones Iterable (wie ein asynchroner Generator)iterable: Ein Iterable (wie ein Array, String, Set usw.)arrayLike: Ein array-ähnliches Objekt (ein Objekt mit einer length-Eigenschaft und indizierten Elementen)mapFn(Optional): Eine Mapping-Funktion, die für jedes Element aufgerufen wirdthisArg(Optional): Der Wert, der als this beim Ausführen von mapFn verwendet werden soll
Rückgabewert
Gibt ein Promise zurück, das zu einem neuen Array aufgelöst wird.
Browser-Unterstützung
Array.fromAsync() ist eine relativ neue Funktion, die Stand 2023 nur in neueren Browserversionen unterstützt wird:
- Chrome 117+
- Firefox 115+
- Safari 16.4+
- Node.js 21+
Für nicht unterstützte Umgebungen können Sie ein Polyfill verwenden oder eine ähnliche Funktionalität selbst implementieren.
Die Zahlen in der Tabelle geben die erste Browserversion an, die die Methode unterstützt.
| Methode | |||||
|---|---|---|---|---|---|
| fromAsync() | 117+ | 121+ | 115+ | 16.4+ | 81.0+ |
Anwendungsbeispiele
Beispiel 1: Ein Array aus einem Async-Generator erstellen
Beispiel
yield 1;
yield 2;
yield 3;
}
(async () => {
const result = await Array.fromAsync(asyncGenerator());
console.log(result); // Ausgabe: [1, 2, 3]
})();
Beispiel 2: Ein Array aus einem regulären Iterable erstellen
Beispiel
(async () => {
const result = await Array.fromAsync(set);
console.log(result); // Ausgabe: [1, 2, 3]
})();
Beispiel 3: Verwendung einer Mapping-Funktion
Beispiel
yield 1;
yield 2;
yield 3;
}
(async () => {
const result = await Array.fromAsync(asyncNumbers(), x => x * 2);
console.log(result); // Ausgabe: [2, 4, 6]
})();
Unterschiede zu Array.from()
Obwohl Array.fromAsync() und Array.from() ähnlich aussehen, gibt es mehrere wichtige Unterschiede:
1. Umgang mit asynchronen Datenquellen
Array.fromAsync() kann asynchrone Iterables verarbeiten, während Array.from() dies nicht kann.
2. Rückgabewert
Array.from() gibt direkt ein Array zurück, während Array.fromAsync() ein Promise zurückgibt.
3. Ausführungszeitpunkt
Array.from() wird synchron ausgeführt, während Array.fromAsync() asynchron ausgeführt wird.
Praktische Anwendungsszenarien
Szenario 1: Umgang mit paginierten API-Daten
Beispiel
let page = 1;
while (true) {
const response = await fetch(`https://api.example.com/data?page=${page}`);
const data = await response.json();
if (data.length === 0) break;
yield* data;
page++;
}
}
(async () => {
const allData = await Array.fromAsync(paginatedFetcher());
console.log(allData); // Daten von allen Seiten in einem Array zusammenführen
})();
Szenario 2: Umgang mit den Ergebnissen mehrerer asynchroner Operationen
Beispiel
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3)
];
(async () => {
const results = await Array.fromAsync(promises);
console.log(results); // Ausgabe: [1, 2, 3]
})();
Zusammenfassung
Array.fromAsync() ist ein leistungsstarkes Werkzeug, besonders geeignet für die Verarbeitung asynchroner Datensammlungen. Es vereinfacht den Prozess der Erstellung von Arrays aus asynchronen Datenquellen und macht den Code sauberer und einfacher zu warten. Obwohl die Browserunterstützung noch nicht weit verbreitet ist, wird es mit der Zeit zu einer der Standardmethoden für die Verarbeitung asynchroner Datensammlungen.
Denken Sie daran: Wenn Sie ein Array aus einer asynchronen Datenquelle erstellen müssen, ist Array.fromAsync() Ihr guter Helfer!
Andere Erweiterungen
JavaScript Array-Objekt