关于事件的一点小总结
nodejs中很多对象具有监听和发送事件的功能,是因为继承了EventEmitter对象。
总结的一点demo:
var EventEmitter = require('events').EventEmitter;
var util = require('util');var Client = function(id) { EventEmitter.call(this); //了解call的用法this.id = id;....}; util.inherits(Client, EventEmitter);
绿色加粗的代码很重要。
这样,Client的对象就可以发送和监听事件了。
做个小例子,建一个Sender类,每隔1s创建一个sender对象,每个对象都监听一个send事件。三个对象之后,触发事件发生,就每隔1s输出自己的id。
var util = require('util'); var EventEmitter = require('events').EventEmitter;var Sender = function(id){ EventEmitter.call(this);this.id = id; };util.inherits(Sender, EventEmitter);//继承EventEmitter,就是事件功能var count = 1;var senderArr = []; var inter_id = setInterval(function(){if(count < 3){var sender = new Sender(count++);console.log('sender count is ' + (count-1));sender.once('send', function(){ //监听事件,事件触发,开始执行监听器函数debugger;setInterval(function(){debugger;console.log('sender ' + sender.id);}, 1000);}); senderArr.push(sender); //添加进数组}else {debugger;senderArr.forEach(function(sender){ sender.emit('send');//触发事件});debugger;clearInterval(inter_id);//清楚interval,需要指定id} }, 1000);
有几个知识点:
1. setInterval 和 clearInterval(id)
setInterval()会返回一个id,删除这个interval需要这个id.
2.数组的使用,以及遍历
var senderArr = [];senderArr.push(sender);senderArr.forEach(function(client){});
3.事件触发
sender.once('send', function() {........ });sender.emit('send');
监听事件有一些方法,如on(),once()等。
注意:触发,和监听的对象要相同,如代码绿色提示部分。
转载于:https://www.cnblogs.com/yilinfengluo/p/4687905.html
关于事件的一点小总结相关推荐
- jupyter中怎么把图形在一个单独的窗口显示_【一点小套路】手把手从安装Python到完成第一个数据分析项目...
上一期的[一点小套路]只是讲了方法论,而没有真正意义上做到一份step by step的教程.所以,尼同学决定,这就给各位零基础的同学做一期手把手教学.全文将会从安装→Jupyter基础→数据分析与建 ...
- php ci项目总结,分享关于php CI框架使用的一点小总结
最近频繁使用CI框架,这里主要是关于后台的开发,重点分享关于Model和Controller层的一点点总结: 1.涉及到交互数据库,我们先在database.php总添加我们需要使用的数据库的连接信息 ...
- 作为面试官的一点小感想
这两天公司要招大数据开发的人,让我去面试这些应聘者,几天下来面试的人也有10多个人了,这其中有应届生.刚工作不久的以及有一定年限的,学历有本科和研究生等.通过和这些人交谈后,心里也有一点小感触和小想法 ...
- C与C++在形参的一点小区别
先看一下下面的代码: int fun(a,b) int a; int b; {return 10; }void main(int argc, char ** argv) {fun(10);return ...
- 函数的傅立叶展开掐死我吧_关于文章《傅里叶分析之掐死教程》的再一点小思考...
封火星:关于文章<傅里叶分析之掐死教程>的一点小思考zhuanlan.zhihu.com 以前的文章,从原理上更好的理解了原文中的一点,不过因为公式不是完全一样,从而有一个新问题不能解决 ...
- 对extern C的一点小认识
对extern "C"的一点小认识 当我们想从C++中调用C的库时,(注,驱动是用C写的,连new.delete也不能用,郁闷)不能仅仅说明 一个外部函数,因为调用C函数的编译代码 ...
- 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)
绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象) 参考文章: (1)绑定bindchang ...
- [短评] 关于顺丰快递大战阿里菜鸟物流事件的一点吐槽
江湖险恶,一个企业要在中国特色市场经济环境中生存下去难免需要执行一些非常规的"经营策略",百度.阿里.腾讯.360这几家公司摸爬滚打多年能屹立不倒,也许或多或少都曾做过一些下三滥的 ...
- 硬核,学习 Java 的一点小建议(思维导图,建议收藏)!
CSDN 收到一条读者的私信,情真意切,所以我承诺他今天一定写篇文章好好回复他一下.先来看一下他的私信内容吧. 首先映入我的眼帘的是这个称呼--"老前辈",我一下子没忍住,笑了! ...
最新文章
- 利用一个继电器来实现脚踏鼠标按钮
- js中apply和Math.max()函数的问题?
- 转行学python后悔了-你是多少岁转行的?转行后你后悔了吗?
- java线程池的使用
- Task三个列子的分享
- 最近在学OpenGL和英语
- 服务器统一计算系统,思科为微软扩展统一计算系统UCS服务器
- 【DIY】可能是最实用最便宜的 arduino 温湿度计方案,200615整合家用声控温湿度计完整方案...
- linux编程能否用于windows,使R包在Windows和Linux中都可以工作
- Python源码阅读-内存管理机制(一)
- android运行时状态,Android 如何保存Android 运行时状态
- php识别地址,实现地址自动识别实例(PHP)
- 1-3docker commit定制镜像
- UNIX(进程间通信):16深入理解Socket
- 自己常用的C/C++小技巧
- 浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。
- Atitit 常用加密算法 aes des rsa 比较 历史演进 目录 1.1. 常规加密算法如下 Aes 3des des rsa	1 2. 加密算法历史演进 按照出现时间和加密强度 流行
- Web程序设计大作业
- linux 约等于符号,在Mac中的特殊符号如何打
- 【多智能体感知与协同调度】