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 相关文章推荐
nodejs读取memcache示例分享
Jan 02 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 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
咖啡与牛奶
2021/03/03 冲泡冲煮
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
聊天室php&mysql(二)
2006/10/09 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Python求离散序列导数的示例
2019/07/10 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Django实现基于类的分页功能
2019/10/31 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
餐厅总经理岗位职责
2013/12/31 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
学校实习推荐信
2015/03/27 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript