nodejs事件的监听与触发的理解分析


Posted in NodeJs onFebruary 12, 2015

本文实例分析了nodejs事件的监听与触发。分享给大家供大家参考。具体分析如下:

关于nodejs的事件驱动,看了《nodejs深入浅出》还是没看明白(可能写的有点深,或者自己理解能力不够好),今日在图灵社区看到一篇关于nodejs事件的监听与触发,由于给出的例子比较多人,很容易理解,所以也大致明白了nodejs事件驱动。

以下内容参考了图灵社区的文章(地址:http://www.ituring.com.cn/article/177478)

首先来了解一下nodejs的Event模块:

Node.js中大部分的模块,都继承自Event模块。Event模块(events.EventEmitter)是一个简单的事件监听器模式的实现类。它的对象具有addListener,on,once,removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现。

首先看一个例子:

var events = require("events");
var emitter = new events.EventEmitter();//创建了事件监听器的一个对象
// 监听事件some_event
emitter.on("some_event", function(){
  console.log("事件触发,调用此回调函数");
});
setTimeout(function(){
  emitter.emit("some_event");   //触发事件some_event
},3000);

看到这个例子,就让我想起了jQuery的自定义事件:

//给element绑定hello事件
element.on("hello",function(){
  alert("hello world!");
});
//触发hello事件
element.trigger("hello");

这样一对比就很容易理解nodejs的事件的监听与触发了。emit 就相当于 jQuery 中的 trigger 触发事件。

希望本文所述对大家的nodejs程序设计有所帮助。

NodeJs 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 #NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 #NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 #NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 #NodeJs
nodejs批量修改文件编码格式
Jan 22 #NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 #NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 #NodeJs
You might like
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP面向对象编程快速入门
2006/10/09 PHP
PHP扩展开发入门教程
2015/02/26 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
Python中除法使用的注意事项
2014/08/21 Python
Python中pillow知识点学习
2018/04/30 Python
Python正则表达式和元字符详解
2018/11/29 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
工艺工程师工作职责
2013/11/23 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
小学清明节活动方案
2014/03/08 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
诚信考试倡议书
2014/04/15 职场文书
Python 阶乘详解
2021/10/05 Python