stream.Readable.from(iterable[, options])


  • iterable <Iterable> 实现了 Symbol.asyncIteratorSymbol.iterator 可迭代协议的对象。如果传入 null 值,会触发 'error' 事件。
  • options <Object> 传递给 new stream.Readable([options]) 的选项。默认情况下,Readable.from() 会将 options.objectMode 设置为 true,除非通过将 options.objectMode 显式设置为 false 来取消。
  • 返回值: <stream.Readable>

用于从迭代器中创建可读流的实用方法。

【A utility method for creating readable streams out of iterators.】

const { Readable } = require('node:stream');

async function * generate() {
  yield 'hello';
  yield 'streams';
}

const readable = Readable.from(generate());

readable.on('data', (chunk) => {
  console.log(chunk);
}); 

调用 Readable.from(string)Readable.from(buffer) 不会对字符串或缓冲区进行迭代以匹配其他流的语义,这是出于性能考虑。

【Calling Readable.from(string) or Readable.from(buffer) will not have the strings or buffers be iterated to match the other streams semantics for performance reasons.】

如果将包含 Promise 的 Iterable 对象作为参数传入,可能会导致未处理的拒绝。

【If an Iterable object containing promises is passed as an argument, it might result in unhandled rejection.】

const { Readable } = require('node:stream');

Readable.from([
  new Promise((resolve) => setTimeout(resolve('1'), 1500)),
  new Promise((_, reject) => setTimeout(reject(new Error('2')), 1000)), // Unhandled rejection
]);