📜  Node.js Stream readable.destroyed 属性(1)

📅  最后修改于: 2023-12-03 14:44:40.387000             🧑  作者: Mango

Node.js Stream readable.destroyed 属性

在 Node.js 中的流(Stream)是一种处理数据的抽象概念。其中可读流(Readable Stream)是一种可以读取数据的流,而 readable.destroyed 属性是可读流的一个属性,表示它是否已经被摧毁。

使用方法

在创建可读流对象时,可以通过设置 options 参数来控制其行为。其中,highWaterMark 属性代表缓存区最大值,如果读取的数据到达这个值,停止从底层资源读取数据,直到消耗当前的缓存区。

const fs = require('fs');
const readable = fs.createReadStream('file.txt', { highWaterMark: 16 });

在读取流的过程中,我们可以监听 readable.destroyed 事件来判断当前流是否已被摧毁。

readable.on('destroyed', () => {
  console.log('The stream has been destroyed.');
});

我们也可以主动摧毁一个可读流对象,通过调用 readable.destroy() 方法来实现。

readable.destroy();
注意事项
  • 一旦可读流被摧毁,将无法再次读取其数据。
  • 调用 readable.destroy() 方法后,会立即触发 readable.destroyed 事件。
示例代码
const fs = require('fs');
const readable = fs.createReadStream('file.txt', { highWaterMark: 16 });

readable.on('data', (chunk) => {
  console.log(`Received ${chunk.length} bytes of data.`);
});

readable.on('error', (err) => {
  console.error(`Error occurred: ${err}`);
});

readable.on('close', () => {
  console.log('The stream has been closed.');
});

readable.on('end', () => {
  console.log('Finished reading data from file.txt.');
});

readable.on('destroyed', () => {
  console.log('The stream has been destroyed.');
});

readable.destroy();

上面这段代码创建了一个可读流对象 readable,并设置了缓存区的最大值为 16。在监听了 dataerrorcloseenddestroyed 事件后,立即摧毁可读流对象。在执行该程序后,输出结果如下:

The stream has been destroyed.