Nex*_*exx 10 node.js node-streams
NodeJS 可写流的“关闭”和“完成”事件有什么区别?
如果我们假设我们有一个写入磁盘的可写流,那么在数据保存到磁盘后,“关闭”和“完成”事件是否都会激活?
当所有数据都写入流但流可能未关闭时,完成。一旦文件关闭,就会发出关闭信号。因此,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 信号,并在关闭文件后关闭。