ReadableStream: from() statische Methode

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Die ReadableStream.from() statische Methode gibt einen ReadableStream von einem bereitgestellten Iterable oder asynchronen Iterable-Objekt zurück.

Die Methode kann verwendet werden, um Iterable- und asynchronen Iterable-Objekte als lesbare Streams zu umhüllen, einschließlich Arrays, Sets, Arrays von Promises, asynchrone Generatoren, ReadableStreams, Node.js readable Streams und so weiter.

Syntax

js
ReadableStream.from(anyIterable)

Parameter

Rückgabewert

Ausnahmen

TypeError

Wird ausgelöst, wenn der übergebene Parameter kein Iterable oder asynchrones Iterable ist (definiert nicht die Methode [Symbol.iterator]() oder [Symbol.asyncIterator]()). Wird auch ausgelöst, wenn während der Iteration das Ergebnis des nächsten Schrittes kein Objekt ist oder ein Promise, das sich nicht zu einem Objekt auflöst.

Beispiele

Ein asynchronen Iterator in einen ReadableStream umwandeln

Dieses Live-Beispiel zeigt, wie Sie ein asynchrones Iterable in einen ReadableStream umwandeln können und dann, wie dieser Stream konsumiert werden könnte.

HTML

Das HTML besteht aus einem einzigen <pre>-Element, das für das Logging verwendet wird.

html
<pre id="log"></pre>

JavaScript

Der Beispielcode erstellt eine log()-Funktion, um zum loggende HTML-Element zu schreiben.

js
const logElement = document.getElementById("log");
function log(text) {
  logElement.innerText += `${text}\n`;
}

Es wird dann überprüft, ob die statische Methode unterstützt wird, und falls nicht, das Ergebnis protokolliert.

js
if (!ReadableStream.from) {
  log("ReadableStream.from() is not supported");
}

Das asynchrone Iterable ist eine anonyme Generatorfunktion, die die Werte 1, 2 und 3 liefert, wenn sie dreimal aufgerufen wird. Dies wird an ReadableStream.from() übergeben, um den ReadableStream zu erstellen.

js
// Define an asynchronous iterator
const asyncIterator = (async function* () {
  yield 1;
  yield 2;
  yield 3;
})();

// Create ReadableStream from iterator
const myReadableStream = ReadableStream.from(asyncIterator);

Verwendung von lesbaren Streams demonstriert mehrere Möglichkeiten, einen Stream zu konsumieren. Der folgende Code verwendet eine for ...await-Schleife, da diese Methode die einfachste ist. Jede Iteration der Schleife protokolliert den aktuellen Chunk aus dem Stream.

js
consumeStream(myReadableStream);

// Iterate a ReadableStream asynchronously
async function consumeStream(readableStream) {
  for await (const chunk of myReadableStream) {
    // Do something with each chunk
    // Here we just log the values
    log(`chunk: ${chunk}`);
  }
}

Ergebnis

Die Ausgabe des Verbrauchs des Streams wird unten angezeigt (wenn ReadableStream.from() unterstützt wird).

Ein Array in einen ReadableStream umwandeln

Dieses Beispiel zeigt, wie Sie ein Array in einen ReadableStream umwandeln können.

JavaScript

Das Iterable ist einfach ein Array von Zeichenfolgen, das an ReadableStream.from() übergeben wird, um den ReadableStream zu erstellen.

js
// An Array of vegetable names
const vegetables = ["Carrot", "Broccoli", "Tomato", "Spinach"];

// Create ReadableStream from the Array
const myReadableStream = ReadableStream.from(vegetables);

Wir verwenden denselben Ansatz wie im vorherigen Beispiel, um zu protokollieren und den Stream zu konsumieren, sodass dies hier nicht gezeigt wird.

Ergebnis

Die Ausgabe wird unten angezeigt.

Spezifikationen

Specification
Streams Standard
# ref-for-rs-from

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch