NodeJs--事件驱动(EventEmitter)

博客转移到个人站点:http://www.wangchengmeng.club/2018/02/01/NodeJs–%E4%BA%8B%E4%BB%B6%E9%A9%B1%E5%8A%A8%EF%BC%88EventEmitter%EF%BC%89/

欢迎来吐槽

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');//设置编码格式

几种事件:

扫描二维码关注公众号,回复: 597056 查看本文章
//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');//同步读取

猜你喜欢

转载自blog.csdn.net/xiaohuanqi/article/details/77103486