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方法来显示这个函数内容,可是没成功。


目录
相关文章
|
3月前
|
JavaScript
超级实用!详解Node.js中的path模块和events模块
超级实用!详解Node.js中的path模块和events模块
|
4月前
|
设计模式 JavaScript API
Nodejs 第十七章(events)
Nodejs 第十七章(events)
28 0
|
JavaScript API 前端开发
node.js入门 - 8.api:events
  从今天开始,我们将介绍node的一些重要的api,首先向大家介绍的是events。他是node中相当重要的一个api,也是实现其他一些api的基础,对他有好的理解,会帮助你使用好其他的api。   如果你用javascript开发过浏览器的应用,那你一定很熟悉事件。
813 0
|
2月前
|
Web App开发 缓存 JavaScript
【安装指南】nodejs下载、安装与配置详细教程
这篇博文详细介绍了 Node.js 的下载、安装与配置过程,为初学者提供了清晰的指南。读者通过该教程可以轻松完成 Node.js 的安装,了解相关配置和基本操作。文章首先介绍了 Node.js 的背景和应用场景,随后详细说明了下载安装包、安装步骤以及配置环境变量的方法。作者用简洁明了的语言,配以步骤图示,使得读者能够轻松跟随教程完成操作。总的来说,这篇文章为初学者提供了一个友好的入门指南,使他们能够顺利开始使用 Node.js 进行开发。
183 1
【安装指南】nodejs下载、安装与配置详细教程
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
76 0
|
3月前
|
JavaScript 前端开发 API
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(下)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
35 0
|
3月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(上)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
42 0
|
17天前
|
JavaScript Windows
NodeJS 安装及环境配置
NodeJS 安装及环境配置
|
26天前
|
Linux 开发工具 git
node使用nrm 管理托管node的安装源
node使用nrm 管理托管node的安装源
41 1
|
1月前
|
Web App开发 JavaScript 前端开发
Windows 10上安装Node.js的初学者指南
Node.js是是一个强大的JavaScript运行时环境,建立在Chrome的V8 JavaScript引擎上,让你能够在服务器端运行JavaScript。 通过本教程,你将学会如何设置Node.js和npm(节点包管理器等现代Web开发的必备工具。无论你是希望构建Web应用程序、创建服务器端脚本,还是涉足全栈开发,安装Node.js都是你的第一步。那么,让我们开始吧!