请通过浏览器功能收藏网页

nodejs系列: 事件模块 javascript

发布时间:2019-01-28 14:10:37  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏

        eventsNodejs最重要的模块,原因是Node.js本身架构就是基于事件模型的 ; events模块不仅用于用户代码与Node.js下层事件循环的交互;还几乎被所有的模块依赖。

下面介绍一下NODE的事件模块的一些常用对象:

1 events.EventEmitter

       EventEmitter的核心就是事件发射与事件监听器功能的封装。EventEmitter的每个事件由一个事件或若干个参数组成,事件名是一个字符串。对于每个事件,EventEmitter支持若干个事件监听器。当事件发射时,注册到这个事件的事件监听器被依次调用事件处理结果参数作为回调函数的参数传递

常用API的方法介绍:

1  EventEmitter.on(event,listener)为指定事件注册一个监听器,接受一个字符串event和一个回调函数listener

2  EventEmitter.emit(event,[arg1],[arg2]....) 触发event事件,传递若干可选参数到事件监听器的参数表

3  EventEmitter.once(event,listener)    为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器。

4  EventEmitter.removeListener(event,listener)移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。

5  EventEmitter.removeAllListeners([event]) 移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器。


实例说明:

var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('click',function(param1,param2){
     console.log('click method 1 = ', param1, param2);
});
eventEmitter.on('click',function(){
     console.log('click method 2 ')
});
eventEmitter.emit('click','hello','world');


image.png

两个注册的事件 都被执行了,且按照注册顺序执行。 



我们在处理事件的时候 有时候需要抛出错误   以便提醒 出错了, 我们可用使用 下面的抛出语句。

var events=require('events');
var emitter=new events.EventEmitter();
emitter.emit('error');

例子2:

//引用事件模块
var EventEmitter = require('events').EventEmitter;
//创建事件对象
var event = new EventEmitter();
//注册事件及  编写具体执行的代码序列
event.on('doing',function(){
         console.log('doing 事件 ');
});
//5秒后触发事件
setTimeout(function(){
         event.emit('doing');
},5000);

此实例运行结果:

5秒后  触发事件  ‘doing'   打印出  'doing 事件' 


下一篇  开始介绍 模块封装


如有疑问 请留言 欢迎提供建议
  • 0

    开心

  • 0

    板砖

  • 0

    感动

  • 0

    有用

  • 0

    疑问

  • 0

    难过

  • 0

    无聊

  • 0

    震惊

评论已有 0