您的位置:首页 > Web前端 > Node.js

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 不会打乱对象原有的继承关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: