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

几种事件:

//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');//同步读取
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值