📜  Node.js stream.Readable.from() 方法(1)

📅  最后修改于: 2023-12-03 15:17:55.751000             🧑  作者: Mango

Node.js stream.Readable.from() 方法

在 Node.js 中,stream.Readable.from() 方法可以方便地创建一个可读流。

使用方式
const { Readable } = require('stream');

const readableStream = Readable.from(['hello', 'world']);

readableStream.on('data', chunk => console.log(chunk));
// 输出: hello
// 输出: world

在上面的例子中,我们使用了 stream.Readable.from() 方法来创建一个可读流 readableStream,这个可读流会读取一个包含 'hello' 和 'world' 两个元素的数组。

接下来,我们通过监听 'data' 事件获取可读流中的数据。在这个例子中,由于我们将 'hello' 和 'world' 写入了可读流,所以最终会输出这两个字符串。

参数

stream.Readable.from() 方法接受一个可迭代对象或一个异步迭代器作为参数。

  • 可迭代对象:可以是一个具有迭代器的对象,例如数组、Set、Map 等。
  • 异步迭代器:通过定义 next() 方法返回一个 Promise,实现异步迭代器协议。

另外,stream.Readable.from() 方法还支持一些可选参数:

  • { objectMode: true }:指定流会接收对象而不是二进制数据。
  • { highWaterMark: 16384 }:指定读取缓冲区的大小,单位是字节。
返回值

stream.Readable.from() 方法返回一个可读流,可以使用与其他可读流相同的方法来处理它。

注意事项
  1. stream.Readable.from() 方法返回的可读流只能被提前消耗一次。例如,如果你使用了 pipe() 方法来将可读流连接到可写流,你必须在使用 pipe() 方法之前消耗完可读流中的所有数据。

  2. 当使用异步迭代器时,stream.Readable.from() 方法支持对返回流的控制权。如果你在异步迭代器中返回的 Promise 是一个 reject 状态,流就会关闭。这可以用于实现基于条件的异步流控制。

总结

stream.Readable.from() 方法提供了一种方便的方式来创建可读流,可以读取数组、Set、Map 等可迭代对象,也可以通过异步迭代器实现可读流的异步操作。同时,它还支持一些可选参数来指定流的读取方式和缓冲区大小。在使用时需要注意可读流只能被提前消耗一次,并且异步迭代器可以用于实现流的异步控制。