📅  最后修改于: 2023-12-03 14:44:40.387000             🧑  作者: Mango
在 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。在监听了 data
、error
、close
、end
和 destroyed
事件后,立即摧毁可读流对象。在执行该程序后,输出结果如下:
The stream has been destroyed.