NodeJs——(5)与 events 事件模块

简介: ①events模块只提供了一个对象,events.EventEmitter 他的核心是 事件发射 和 事件监听 功能   每个事件由一个事件名(用于标识事件),和多个参数组成。   事件名:字符串,通常表达一定的语义;   事件被发射时,监听该事件的函数被依次调用。     ②调用模块: var events = require("events");var emi

①events模块只提供了一个对象,events.EventEmitter

他的核心是 事件发射 和 事件监听 功能

 

每个事件由一个事件名(用于标识事件),和多个参数组成。

 

事件名:字符串,通常表达一定的语义;

 

事件被发射时,监听该事件的函数被依次调用。

 

 

②调用模块:

var events = require("events");
var emitter = new events.EventEmitter();

事件监听:

emitter.on("/click", function () {
    console.log("first event");
})
emitter.on("/click", function () {
    console.log("second event");
})

事件发射:

emitter.emit("/click");

注意:

【1】/click是事件名(用于标识事件)

【2】可以多个监听,用于监听同一个事件,然后依次执行;

【3】需要先监听,后发射;

【4】监听是on,发射是emit

【5】把emit发射的事件赋值给变量。如果有监听该事件的,则变量值为true,如果无监听该事件,则返回值为false。注意,该变量赋值后不会改变。

即:

var nn = emitter.emit("/click1");
emitter.on("/click1", function () {
    console.log("first event");
})
console.log(nn);

其值nn依然为false。

 

 

③只监听一次:

EventEmitter.once(事件名, 回调函数)

即把上面的on替换为once即可,然后这个只监听一次就失效;

 

 

④移除监听:

EventEmitter.removeListener(事件名, 回调函数名)

注意,这里的关键是:回调函数名,如代码:

 

var events = require("events");
var emitter = new events.EventEmitter();
var first = function () {
    console.log("first event");
}
var second = function () {
    console.log("second event");
}

emitter.on("/click", first)
emitter.on("/click", second)
emitter.emit("/click");
emitter.removeListener("/click", first);
console.log("————移除完成————");
emitter.emit("/click");

输出:


 

⑤全部监听移除:

var events = require("events");
var emitter = new events.EventEmitter();
var first = function () {
    console.log("first event");
}
var second = function () {
    console.log("second event");
}

emitter.on("/click", first)
emitter.on("/click", second)
emitter.emit("/click");
emitter.removeAllListeners("/click");
console.log("————移除完成————");
emitter.emit("/click");

输出:


 

⑥error事件

当遇见异常时会发射error事件,EventEmitter规定,如果没有监听其的监听器,Node.js会把其当成异常,退出程序并打印调用栈。

因此需要设置监听其的监听器,避免遇见错误后整个程序崩溃。

var events = require("events");
var emitter = new events.EventEmitter();
var first = function () {
    console.log("first event");
}
var error = function (error) {
    console.log(error);
}

emitter.on("/click", first)
emitter.on("error", error)  //如果没有这一行代码,下面在发射error时会出错然后退出程序
emitter.emit("/click");
emitter.emit("error", error)
console.log("————移除完成————");
emitter.emit("/click");

输出:


 

但注意:

【1】这个似乎只能对事件的error有效,假如你把发射error事件那行替换为随便几个字母,他依然是会出错然后退出的

【2】注意,error事件不能将console.log替换为error(),会导致直接出错退出

【3】另外,我尝试了用console.log,还有util.inspect方法来显示这个函数内容,可是没成功。


目录
相关文章
|
6月前
|
JavaScript
超级实用!详解Node.js中的path模块和events模块
超级实用!详解Node.js中的path模块和events模块
|
6月前
|
设计模式 JavaScript API
Nodejs 第十七章(events)
Nodejs 第十七章(events)
55 0
|
JavaScript 前端开发
Node 入门(7):events 模块和发布订阅模式
本文会介绍 events 模块的主要作用和使用方式,以及自己实现一个简单的发布订阅模式,帮助加深理解。
415 0
|
JavaScript API 前端开发
node.js入门 - 8.api:events
  从今天开始,我们将介绍node的一些重要的api,首先向大家介绍的是events。他是node中相当重要的一个api,也是实现其他一些api的基础,对他有好的理解,会帮助你使用好其他的api。   如果你用javascript开发过浏览器的应用,那你一定很熟悉事件。
834 0
|
2月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
1月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
21 2
|
2月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
26天前
|
Web App开发 JavaScript 前端开发
JavaWeb 22.Node.js_简介和安装
JavaWeb 22.Node.js_简介和安装
|
2月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
2月前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。