欢迎来吐槽
EventEmitter:
on: 绑定函数
var connected = function connected(){
console.log('connected success');
eventEmitter.emit('data_received'); //触发data_received函数
}
eventEmitter.on('connection',connected);//on 用于绑定回调函数,connection 函数绑定到connection上
emit:触发函数调用:
eventEmitter.emit('connection');//用于触发一个函数,
事例:
var events = require('events');
var eventEmiter = new events.EventEmitter();
var submit = function(){
console.log("调用函数submit了");
}
eventEmiter.on('submit',submit);//绑定
eventEmiter.on('publish',function(){
console.log("调用函数publish-----");
eventEmiter.emit('submit');
});
eventEmiter.emit('publish');
给监听器 添加 绑定 移除 统计 监听事件
定义两个函数:
var lisenter1 = function lisenter1(){
console.log("lisenter1 excute");
}
var lisenter2 = function lisenter2(){
console.log("lisenter2 excute");
}
添加监听事件:
eventEmitter.addListener('connection',lisenter1);//给connection 添加 listener
eventEmitter.on('connection',lisenter2);//给connection 添加 listener 默认最多添加10个 可以修改这个值
eventEmitter.removeListener('connection',lisenter1);//从监听器移除指定的监听事件
var eventListener = require('events').EventEmitter.listenerCount(eventEmitter,'connection');//获取一个监听器中的监听数量
eventEmitter.emit('connection');//触发监听器 会按照添加监听的顺序去执行监听
数据流
读取文件:
var fs = require('fs');
var data = '';
var readStream = fs.createReadStream('test.txt');//创建一个读取流
readStream.setEncoding('UTF8');//设置编码格式
几种事件:
//data事件 有数据可读的时候触发
readStream.on('data',function(chunk){
data += chunk;
console.log("call data function"+chunk);
});
//没有更多数据的时候触发
readStream.on('end',function(){
console.log("call end function");
console.log(data);
});
//有错误的时候触发
readStream.on('error',function(err){
console.log(err.stack);
});
写入文件:
var fs = require('fs');
var data = "node js 写入文件";
var write = fs.createWriteStream('test.txt');//创建写入流
write.write(data,'UTF8');
write.end();//写入
write.on('finish',function(){
console.log("write completed");
});
write.on('error',function(err){
console.log(err.stack);
});
管道流:
var fs = require('fs');
var read = fs.createReadStream('test.txt');
var write = fs.createWriteStream('text1.txt');
//管道流,一端输入 一端输出
read.pipe(write);
同步与异步:
//异步读取 凡是异步 最后一个参数都是一个回调函数
fs.readFile('test.txt',function(err,data){
if(err){
return console.error(err);
}
console.log("Async read:"+data.toString);
});
var data = fs.readFileSync('test.txt');//同步读取