程序员WEB前端程序开发开源工具技巧

6.NodeJs事件模块

2017-01-10  本文已影响25人  coderLfy

常用事件模块


由于本人也是才开始学习Node,所以这里只简单的讲点Scott老师来视频中讲解的事件,后续在进行总结!

官网Api

首先导入events模块

var EventEmitter = require('events').EventEmitter;
var life = New EventEmitter();

解释一下:

Node.js核心API的大部分是围绕一个惯用的异步事件驱动架构构建的,其中某些类型的对象(称为“发射器”)周期性地发出命名事件,使得调用Function对象(“侦听器”)。

添加一个事件(addListener)括号中的也可以使用

on(eventName,listener)

life.on('EV', function(a) {
  console.log(a);//参数,由emit传递
});

创建事件是一个发射器,接受器 emit

emitter.emit(eventName,[...args])
返回值为boolean

var isTure = life.emit('EV','参数')//返回一个true
//第二个参数会传递到on里的回调函数中去

说到发出事件,接收事件,怎么删除呢? Scott老师在视频中也讲到了一个坑:不能移除一个匿名函数

移除事件的时候只能移除具名函数

移除某个事件:
left.removeListener(eventName,listener)

//Scott老师为了便于大家理解,写的伪代码
function water(who){
    console.log('给'+ who + '倒水')!
}
life.on('求安慰',water);
life.removeListener('求安慰',water);//解除成功

移除全部事件:life.removeAllListeners(EventName)

获某个事件的集合:life.listeners(eventName)
可以加length获得总数

EventEmitter.listenerCount(eventName);4.0已被弃用
官方推荐使用emitter.listenerCount(eventName)返回事件的数目

上一篇 下一篇

猜你喜欢

热点阅读