Node js Streams:“关闭”与“完成”事件

Nex*_*exx 10 node.js node-streams

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

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

kg9*_*g99 9

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

例如:

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');
Run Code Online (Sandbox Code Playgroud)

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

完成写入文件后将发出 Finish 信号,并在关闭文件后关闭。