Node.js EventEmitter (触发器)

简介: Node.js EventEmitterNode.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列.Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。

Node.js EventEmitter


Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列.
Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。

EventEmitter 类


events 模块只提供了一个内部类: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。你可以通过require("events");来访问该模块。创建一个文件叫做emitter.js:

//创建EventEmitter类
var EventEmitter = require('events').EventEmitter();
//创建eventEmitter对象
var eventEmitter = new EventEmitter();
eventEmitter.on('bomb',function(){
      //观察者为匿名函数,事件为bomb
      console.log('bomb已经引爆');
})

//创建bomb之后就是要引爆它了,这里牵扯到事件的触发
setTimeout(function(){
      eventEmitter.emit('bomb');
},1000);

执行结果如下:
运行这段代码,1 秒后控制台输出了 '事件触发'。其原理是 event 对象注册了事件 bomb 的一个监听器,然后我们通过 setTimeout 在 1000 毫秒以后 event 对象触发事件bomb,此时会调用bomb的监听器(匿名函数)。

$ node emitter.js
bomb已经引爆

eventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。
当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。
让我们以下面的例子解释这个过程:

 var event = require('events');
 var eventEmitter = new event.EventEmitter();

 eventEmitter.on('bobm',function(args1,args2){
       console.log('bomb引燃,引燃使用的是:'+args1+" 和"+arg2);
 });

eventEmitter.on('bobm',function(args1,args2){
       console.log('bomb引燃,使用的是:'+args1+"或者 "+arg2);
 });

执行以上代码,运行的结果如下:

$ node event.js
listener1 arg1 参数 arg2 参数
listener2 arg1 参数 arg2 参数

以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。
运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。
EventEmitter 提供了多个属性,如 onemiton 函数用于绑定事件函数,emit 属性用于触发一个事件。

博客搬家:大坤的个人博客
欢迎评论哦~

目录
相关文章
|
4月前
|
JavaScript 前端开发
Node.js中的EventEmitter模块:基本概念、使用方法和常见应用场景
Node.js中的EventEmitter模块:基本概念、使用方法和常见应用场景
67 0
|
JSON 缓存 JavaScript
Node.js EventEmitter 和 Buffer
Node.js EventEmitter 和 Buffer
|
JavaScript 前端开发 应用服务中间件
实战Node.js原理对于阻塞和EventEmitter及其继承的运用心得
实战Node.js原理对于阻塞和EventEmitter及其继承的运用心得
实战Node.js原理对于阻塞和EventEmitter及其继承的运用心得
|
JSON JavaScript 数据格式
Node.js躬行记(1)——Buffer、流和EventEmitter
  Buffer是一种Node的内置类型,不需要通过require()函数额外引入。它能读取和写入二进制数据,常用于解析网络数据流、文件等。
|
JavaScript
Node.js EventEmitter
Node.js EventEmitter Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。
1264 0
node 之EventEmitter实现
node 根据事件驱动,那基本都是回调,最常用的叫发布订阅模式,什么叫发布订阅呢?对比观察者模式,前者是主动地,后者是被动的
1474 0
|
21天前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
40 0