【Node.js基础篇】(七)Node异步编程之事件发射器

释放双眼,带上耳机,听听看~!

事件发射器是Node里除了回调函数外的另一十分重要的异步编程技术。 在MFC等图形界面编程库中,事件发射器是非常常见的,比如,鼠标点击事件,点击了鼠标后,就会触发鼠标点击后的函数——事件发射器触发事件,并且在事件被触发后处理它们。在Node API组件中,如HTTP服务器、TCP服务器等都被做成了事件发射器,所以掌握事件发射器的编程方法,是非常重要的。

使用on添加监听器

步骤:

  1. 声明事件发射器类

  2. 创建事件发射器对象

  3. 使用on添加事件发射器

  4. 使用emit发射事件


1
2
3
4
5
6
7
8
9
10
11
12
13
1//事件发射器类声明
2var EventEmitter =  require("events").EventEmitter;
3//创建事件发射器
4var emitter = new EventEmitter();
5
6//使用on添加监听器
7emitter.on("hello",function(){
8    console.log("Hello");
9});
10
11//使用emit函数发射事件
12emitter.emit("hello");
13

使用addListener添加事件

示例:


1
2
3
4
5
6
7
8
9
10
11
12
13
1//事件发射器类声明
2var EventEmitter =  require("events").EventEmitter;
3//创建事件发射器
4var emitter = new EventEmitter();
5
6//使用addListener添加监听器
7emitter.addListener("hello",function(){
8    console.log("Hello");
9});
10
11//使用emit函数发射事件
12emitter.emit("hello");
13

注册带参数的事件监听器

注册的监听器可直接带上参数,在emit发射事件时,添加上对应的参数即可。示例:


1
2
3
4
5
6
7
8
9
10
11
12
13
1//事件发射器类声明
2var EventEmitter =  require("events").EventEmitter;
3//创建事件发射器
4var emitter = new EventEmitter();
5
6//使用on添加监听器
7emitter.on("hello",function(name,age){
8    console.log(name+" is "+age);
9});
10
11//使用emit函数发射事件
12emitter.emit("hello","king","21");
13

移除事件发射器

使用removeAllListeners移除hello事件所有的监听器,使用removeListener移除hello事件特定的监听器,示例:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1//事件发射器类声明
2var EventEmitter =  require("events").EventEmitter;
3//创建事件发射器
4var emitter = new EventEmitter();
5
6//使用on添加监听器
7emitter.on("hello",function(name,age){
8    console.log(name+" is "+age);
9});
10
11//使用emit函数发射事件
12emitter.emit("hello","king","21");
13
14//添加移除监听器的事件
15emitter.on("quit",function(name){
16    emitter.removeAllListeners(name) ; //移除名字为name的事件监听器
17});
18//移除hello这一事件
19emitter.emit("quit","hello");
20
21//再调用一次看看效果(不会有任何效果,因为现在已经没有hello这个事件的监听器了)
22emitter.emit("hello","king","21");
23

给TA打赏
共{{data.count}}人
人已打赏
安全技术

使用shell脚本进行服务器系统监控——文件系统监控(3)

2021-8-18 16:36:11

安全技术

C++ 高性能服务器网络框架设计细节

2022-1-11 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索