nodejs 事件
2016-06-21 15:05
381 查看
1.nodejs 提供事件模块,事件模块只有一个对象EventEmitter
EventEmitter 的核心就 是事件发射与事件监听器功能的封装,EventEmitter 常用的API:
一直监听:EventEmitter.on(event, function)
添加监听:EventEmitter.addListener(event, function)
发射事件:EventEmitter.emit(event, [arg1],[arg2],[...])
单次监听:EventEmitter.once(event, function)
移除监听:EventEmitter.removeListener(event,
function)
移除所有或者指定 event:EventEmitter.removeAllListener([event])
2.例子:
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2){
console.log('listent1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2){
console.log('listent2', arg1, arg2);
});
emitter.emit('someEvent', 'byvoid', 1991);
3.error 事件:
如果只定义 emitter.emit 事件发射,不定义 事件监听,就会报错
4.EventEmitter 继承
大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、net、 http 在内的,只要是支持事件响应的核心模块都是 EventEmitter 的子类。
为什么要这样做呢?原因有两点:
首先,具有某个实体功能的对象实现事件符合语义, 事件的监听和发射应该是一个对象的方法。
其次JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。
EventEmitter 的核心就 是事件发射与事件监听器功能的封装,EventEmitter 常用的API:
一直监听:EventEmitter.on(event, function)
添加监听:EventEmitter.addListener(event, function)
发射事件:EventEmitter.emit(event, [arg1],[arg2],[...])
单次监听:EventEmitter.once(event, function)
移除监听:EventEmitter.removeListener(event,
function)
移除所有或者指定 event:EventEmitter.removeAllListener([event])
2.例子:
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2){
console.log('listent1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2){
console.log('listent2', arg1, arg2);
});
emitter.emit('someEvent', 'byvoid', 1991);
3.error 事件:
如果只定义 emitter.emit 事件发射,不定义 事件监听,就会报错
4.EventEmitter 继承
大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、net、 http 在内的,只要是支持事件响应的核心模块都是 EventEmitter 的子类。
为什么要这样做呢?原因有两点:
首先,具有某个实体功能的对象实现事件符合语义, 事件的监听和发射应该是一个对象的方法。
其次JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。
相关文章推荐
- nodejs 模块系统
- 安装 node
- hibernate 中,出现了错误 "node to traverse cannot be null!" 如何改正
- (转)nodejs中npm常用命令
- LeetCode Reverse Nodes in k-Group(单链表连续分段反转)
- ROS学习--人脸识别NODE
- JetBrains使用技能分享征集大赛优秀作品——用webstorm开发NodeJS项目
- ROS学习--语义理解NODE(NLU,NLP)
- systemtap [主设备号,次设备好,inode]监控文件
- LeetCode OJ | #25 Reverse Nodes in k-Group
- nodejs的require模块及路径
- Nodejs的测试和测试驱动开发
- Node.js模块定义总结
- node环境
- node应用线上部署时锁定包的依赖版本
- Nodejs与Python脚本语言混编
- when 让你跳出异步回调噩梦 node.js下promise/A规范的使用
- node.js 下使用 util.inherits 来实现继承
- 使用node-livereload自动刷新页面
- nodejs 字符串转gbk base64