stream.Readable.from(iterable[, options])
iterable<Iterable> 实现了Symbol.asyncIterator或Symbol.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
]);