当前位置:首页 > 日记 > 正文

关于Node.js的events.EventEmitter用法介绍

关于Node.js的events.EventEmitter用法介绍

Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。

Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。
EventEmitter 类

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

你可以通过require(“events”);来访问该模块。

// 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); 

EventEmitter 对象如果在实例化时发生错误,会触发 ‘error' 事件。当添加新的监听器时,'newListener' 事件会触发,当监听器被移除时,'removeListener' 事件被触发。

下面我们用一个简单的例子说明 EventEmitter 的用法:

//event.js 文件 var EventEmitter = require('events').EventEmitter;  var event = new EventEmitter();  event.on('some_event', function() {    console.log('some_event 事件触发');  });  setTimeout(function() {    event.emit('some_event');  }, 1000);  

执行结果如下:

运行这段代码,1 秒后控制台输出了 ‘some_event 事件触发'。其原理是 event 对象注册了事件 some_event 的一个监听器,然后我们通过 setTimeout 在 1000 毫秒以后向 event 对象发送事件 some_event,此时会调用some_event 的监听器。

$ node event.js

some_event 事件触发

EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。

当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。

让我们以下面的例子解释这个过程:

//event.js 文件 var events = require('events');  var emitter = new events.EventEmitter();  emitter.on('someEvent', function(arg1, arg2) {    console.log('listener1', arg1, arg2);  });  emitter.on('someEvent', function(arg1, arg2) {    console.log('listener2', arg1, arg2);  });  emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');  

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

$ node event.js

listener1 arg1 参数 arg2 参数

listener2 arg1 参数 arg2 参数

以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。

运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

excel2007没有日历控件的调出方法e

excel2007没有日历控件的调出方法e

日历控件,方法,设置,日历,电脑软件,  有时我们在运用Excel表格的时候会运用到日历的控件,可是小伙伴们却不知道在哪里添加。那么我们来看一下,它到底躲藏在哪里,又该怎么添加呢?今天,小编就教大家如何调出日历控件的方法!Excel2007调出日历控…

excel2007工作表标签设置显示的方

excel2007工作表标签设置显示的方

显示,标签,方法,设置,工作,  Excel中的过坐标标签被隐藏了具体该如何设置显示呢?接下来是小编为大家带来的excel2007工作表标签设置显示的方法,供大家参考。excel2007工作表标签设置显示的方法显示工作表标签步骤1:点击office功能按钮,选择…

怎么在ppt2010中设置页码在ppt2010

怎么在ppt2010中设置页码在ppt2010

设置,方法,步骤,页码,电脑软件,  使用Microsoft PowerPoint,可以创建动态演示文稿并与观众共享。下面小编教你ppt页码怎么设置。希望对你有帮助!ppt2010页码设置步骤 单击下图红框中的“插入”面板按钮。ppt2010页码设置步骤 图1…

JS简单验证上传文件类型的方法

JS简单验证上传文件类型的方法

文件类型,验证,上传,方法,简单,本文实例讲述了JS简单验证上传文件类型的方法。分享给大家供大家参考,具体如下:function checkType(){ //得到上传文件的值 var fileName=document.getElementById("file_logo").value; //返回String对象中子…

详解JS数组Reduce | 方法详解及高

详解JS数组Reduce | 方法详解及高

方法,高级技巧,数组,详解,电脑软件,基本概念reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参…

如何设置和使用Excel中的数据有效

如何设置和使用Excel中的数据有效

数据有效性,步骤,如何设置,电脑软件,strong,  我们在使用Excel工作表来工作时,有时候为了防止和避免输入重复的数据,会使用到数据有效性。如何设置和使用Excel中的数据有效性呢?下面小编来告诉你吧。Excel中数据有效性的使用步骤首先我们打…

ppt2007中文版怎么设弄背景

ppt2007中文版怎么设弄背景

设置,方法,背景,中文版,技巧,  怎么在ppt2007中设置一张漂亮的图片做背景呢?一份好的PPT不仅可以吸引观众的眼球同时还可以反映自己的制作能力,下面小编就为你提供ppt2007怎样设置背景的方法啦,欢迎大家来到学习。ppt2007设置背景的方法技…

使用vue-resource进行数据交互的实

使用vue-resource进行数据交互的实

数据交互,实例,电脑软件,vue,resource,一.使用vue-resource插件进行数据交互式,返回的并不是直接的json数据,其实还封装了一层。如下代码:直接使用 res.result.list 取不到数据。methods:{ cartview:function(){ var _this = this; this.…

如何删除Excel工作表中数据区域中

如何删除Excel工作表中数据区域中

区域,数据,删除,奇数,工作,  在Excel工作表中,有时需要删除数据区域中的某些特定行,如数据区域中的奇数行。如果由操作者一行一行地删除,则效率较低。以下是小编为您带来的关于删除Excel工作表中数据区域中的奇数行,希望对您有所帮助。删除Ex…

excel 2010自动筛选的使用教程exce

excel 2010自动筛选的使用教程exce

筛选,使用教程,电脑软件,excel,strong,  在Excel2010中,界面改动得相当大,所以有很多用户都不知道该如何去把自动筛选的功能用出来,接下来请欣赏小编给大家网络收集整理的excel 2010自动筛选的使用教程。excel 2010自动筛选的使用教程自动筛…

excel怎么设置表格设置兼容模式

excel怎么设置表格设置兼容模式

设置,兼容模式,方法,表格,电脑软件,  Excel中的表格具体该如何从兼容模式改到正常模式呢?对于新手来说还是有一定难度,怎么办?下面是小编带来的关于excel表格兼容模式改正常模式的方法,希望阅读过后对你有所启发!excel表格设置兼容模式的方…

JavaScript中在光标处插入添加文本

JavaScript中在光标处插入添加文本

文本标签,光标,节点,方法,详细,正确的方法是正确运用Selection对象和Range对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样…