当前目录下准备一个test.txt, 写入一些东西, 比如
>It's for test<
分别执行代码:
- 注释掉延时为 3 ms的代码块, 输出dest.txt, 内容为
>It's for test<
- 注释掉延时为 2 ms的代码块, 输出dest.txt, 内容为
>It's for test<>It's for test<
以下为代码
const fs = require('fs')
const from = fs.createReadStream('test.txt')
const to = fs.createWriteStream('dest.txt', {
flags: 'a'
})
from.pipe(to, {
end: false
})
from.on('end', () => {
console.log('end')
})
// setTimeout(() => {
// from.pipe(to)//this won't work, if time >= 3
// }, 3)
// setTimeout(() => {
// from.pipe(to)//this will work, if time < 3
// }, 2)
只触发end事件一次
不同时间延迟, 输出不同, 行为十分诡异, 求解释?
通过
I/O
读取字符串到缓冲区timers
阶段没有callback
执行,写入WriteStream
,timers
阶段检测到callback
,执行callback
,然鹅ReadStream
没数据,pipe
没有效果。timers
阶段检测到callback
,执行callback
,ReadStream
数据还在,pipe
有效果。用
process.stdout
测试