let EventEmitter = require('events');
let {inherits} = require('util');
function Girl(){}
let girl = new Girl();
inherits(Girl,EventEmitter);//Girl继承events
let fn = function(param){
console.log('哭',param);
}
girl.on('失恋',fn)//订阅
girl.once('失恋',function(param){//执行一次
consloe.log('吃',param);
})
girl.removeListener('失恋',fn);//取消监听
girl.emit('失恋','我');//发布
//流,可读可写
let fs = require('fs');
//heightWaterMark 每次能读多少,默认64k,默认读buffer
let rs = fs.createReadStream('1.txt');
//监听事件 数据到来的事件 rs.emit('data',数据)
//默认叫非流动模式 => 流动模式
let arr = [];
rs.on('data',function(chunk){
console.log(chunk)
arr.push(chunk);
rs.pause();//暂停 暂停的是on('data')的触发
})
rs.resume(); //恢复data事件的触发
//默认data事件是不停的触发,知道文件中的数据全部读出来
rs.on('end',function(){
console.log(Buffer.concat(arr).toString())
})
rs.on('err',function(err){
//文件不存在
})
// on('data') on('err') on(''end) resume() pause()
let fs = require('fs')
//可写流 默认要占用16k
let ws = fs.createWriteStream('1.text',{heightWaterMark:1})
//可写流有两个方法 write end
ws.write(1+'');//可写流来写数据必须时字符串类型或buffer类型
let status = ws.write(2+''); ws.write为异步,返回true或false,false表示该次读满了,先暂停等写完了再开始读取
ws.end('吃饱了');//调用end后不能再用write
ws.on('drain',function(){ //当读入的文件 全部写入后 就恢复读取
console.log('读完了')
})