【问题标题】:Node js Streams: 'close' vs 'finish' eventNode js Streams:“关闭”与“完成”事件
【发布时间】:2020-11-25 21:23:44
【问题描述】:

NodeJS 可写流的“关闭”和“完成”事件有什么区别?

如果我们假设我们有一个写入磁盘的可写流,那么在数据持久化到磁盘后是否会激活“关闭”和“完成”事件?

【问题讨论】:

标签: node.js node-streams


【解决方案1】:

当所有数据都写入流但流可能未关闭时,完成。之后,一旦文件关闭,就会发出关闭信号。因此完成将在关闭之前触发。

例如:

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');

我们可以说写入文件涉及打开文件、写入数据到文件和关闭文件。

文件写入完成后发出Finish,关闭文件后关闭。

【讨论】:

  • 如果我们有你的例子,当我们写入磁盘中的文件时,是否有可能将文件写入可写流的内部缓冲区,但尚未保存到磁盘,并且'finish' 事件在那个时候发出(当数据只在内存中,不在磁盘中)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2016-07-20
相关资源
最近更新 更多