NodeJS可写流的'close'和'finish'事件有何区别?
假设我们有一个向磁盘写入数据的可写流,那么在数据是否已经持久化到磁盘后,'close'事件和'finish'事件是否都会被触发?
NodeJS可写流的'close'和'finish'事件有何区别?
假设我们有一个向磁盘写入数据的可写流,那么在数据是否已经持久化到磁盘后,'close'事件和'finish'事件是否都会被触发?
使用finish事件,数据被写入流后,流可能没有关闭。在文件关闭后会发出一次close事件。因此,finish事件将在close事件之前触发。
例如:
const writer = getWritableStreamSomehow();
for (let i = 0; i < 100; i++) {
writer.write(`hello, #${i}!\n`);
}
writer.on('finish', () => {
console.log('All data is written but file might NOT be closed');
});
writer.on('close', () => {
console.log('All data written and file is closed');
});
writer.end('This is the end\n');