Spec-Zone.ru › Web APIs

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 Нет Нет Нет Нет

См. также

  • ReadableStream
  • Использование потоков чтения

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API