ReadableStream: метод from()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых наиболее широко используемых браузерах.
Примечание: Эта функция доступна в Web Workers.
Экспериментальная функция: Это экспериментальная технология.
Тщательно проверьте таблицу совместимости браузеров таблица совместимости браузеров перед использованием в продакшене.
Статический метод ReadableStream.from() возвращает объект ReadableStream на основе предоставленного итерируемого или асинхронного итерируемого объекта.
Метод может быть использован для обертывания итерируемых и асинхронных итерируемых объектов в виде читаемых потоков, включая массивы, множества, массивы промисов, асинхронные генераторы, ReadableStreams, Node.js readable потоки и т.д.
Синтаксис
ReadableStream.from(anyIterable)
Параметры
anyIterable-
Объект итерируемый или асинхронно итерируемый.
Возвращаемое значение
Объект ReadableStream.
Исключения
TypeError-
Выбрасывается, если переданный параметр не является итерируемым или асинхронно итерируемым объектом (не определяет метод
[Symbol.iterator]()или[Symbol.asyncIterator]()). Также выбрасывается, если во время итерации результат следующего шага не является объектом или является промисом, который не разрешается в объект.
Примеры
Преобразование асинхронного итератора в ReadableStream
Этот пример демонстрирует, как преобразовать асинхронно итерируемый объект в ReadableStream, а затем, как этот поток может быть потреблен.
HTML
HTML состоит из единственного элемента <pre>, используемого для регистрации.
<pre id="log"></pre>
JavaScript
Код примера создаёт функцию log() для записи в элемент HTML журнала.
const logElement = document.getElementById("log");
function log(text) {
logElement.innerText += `${text}\n`;
}
Затем он проверяет, поддерживается ли статический метод, и если нет, регистрирует результат.
if (!ReadableStream.from) {
log("ReadableStream.from() is not supported");
}
Асинхронно итерируемый объект — это анонимная функция-генератор, которая возвращает значения 1, 2 и 3 при вызове три раза. Она передаётся в ReadableStream.from() для создания ReadableStream.
// Define an asynchronous iterator
const asyncIterator = (async function* () {
yield 1;
yield 2;
yield 3;
})();
// Create ReadableStream from iterator
const myReadableStream = ReadableStream.from(asyncIterator);
Использование потоков чтения демонстрирует несколько способов потребления потока. Ниже используется цикл for ...await, так как этот метод является наиболее простым. В каждой итерации цикла регистрируется текущая часть из потока.
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}`);
}
}
Результат
Вывод потребления потока показан ниже (если ReadableStream.from() поддерживается).
Преобразование массива в ReadableStream
Этот пример демонстрирует, как преобразовать Array в ReadableStream.
JavaScript
Итерируемый объект — это просто массив строк, который передаётся в ReadableStream.from() для создания ReadableStream.
// An Array of vegetable names const vegetables = ["Carrot", "Broccoli", "Tomato", "Spinach"]; // Create ReadableStream from the Array const myReadableStream = ReadableStream.from(vegetables);
Мы используем тот же подход, что и в предыдущем примере, для логирования и потребления потока, поэтому он здесь не показан.
Результат
Вывод показан ниже.
Спецификации
| Спецификация |
|---|
| Потоки # ref-for-rs-from |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
from_static |
Нет | Нет | 117 | Нет | Нет | Нет | 117 | Нет | Нет | Нет | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static