前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs的事件处理机制

nodejs的事件处理机制

作者头像
前端_AWhile
发布2019-08-29 14:46:11
7300
发布2019-08-29 14:46:11
举报
文章被收录于专栏:前端一会

类似于javascript客户端代码中存在由元素触发的事件机制,在nodejs中,也有由对象触发的事件处理机制,比如http.Server对象,就可能会触发'接收到客户端请求request'、'响应客户端请求response'、'连接错误'等各种事件。

nodejs中常用的内置模块主要有httpospathfseventsstream等,其中event模块就是用来实现各种事件处理机制的。

在学习event模块实现事件处理机制前,首先回顾下nodejs模块的引入。在nodejs中,可以直接使用require函数并将模块名设置为require函数的参数值的方法来引用模块。

可以用如下引用http模块的代码作为示例:

代码语言:javascript
复制
const http = require('http')

这段代码使用require函数来引用http模块,该函数返回http模块对象,可以通过将该对象赋值给http变量来访问http模块中的属性和方法。

好,回顾完毕。说回主线nodejs事件处理机制。

nodejs的用于实现各种事件处理的event模块中,定义了一个EventEmitter类,所有可能触发事件的对象都是一个继承了EventEmitter类的子类的实例对象EventEmitter类中定义好了许多方法,所有与对象的事件处理函数的绑定及解除相关的处理均依靠这些方法的调用来执行。

这里请注意两点,首先EventEmitter类是event模块里的类,其次EventEmitter类中定义的与对象调用相关的方法为实例方法。这与后面要讲到的类方法是有区别的。

EventEmitter类的实例方法:

  • addListener(event, listener) / on(event, listener) 对指定事件绑定事件处理函数
  • once(event, listener) 对指定事件只执行一次的事件处理函数
  • removeListener(event, listener)
  • removeAllListeners([event])
  • setMaxListeners(n) 指定事件处理函数的最大数量。n为整数值
  • listeners(event) 获取指定事件的所有事件处理函数
  • emit(event, [arg1], [arg2], […]) 手工触发指定事件

举一个示例以作代表:

代码语言:javascript
复制
const http = require('http');   //引入http模块并赋值给http变量
const server = http.createServer();     //创建http服务器并将该服务器赋值给变量server

//为server服务器在接收到客户端发来请求时q触发的request事件绑定事件处理函数
server.on('request', function(req, res){
    console.log(req.url);
    res.end();
});
server.listen(8000, '127.0.0.1')

EventEmitter类方法有两种:newListener事件与removeListener事件。

当对继承了EventEmitter类的子类的实例对象进行绑定事件处理函数时,都会触发EventEmitter类的newListener事件。

以下为示例代码:

代码语言:javascript
复制
emitter.on('newListener', function(e, f){
    //事件处理函数代码
    //参数e为被绑定的事件名
    //参数f为被绑定的事件处理函数
})

而当对继承了EventEmitter类的子类的实例对象进行取消事件处理函数时,都会触发EventEmitter类的removeListener事件。示例同上,只是参数e和f分别为被取消事件处理函数的事件名和事件处理函数,就不重复举例了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小二 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档