1    所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上。 事件名称通常是驼峰式的字符串,但也可以使用任何有效的 JavaScript 属性名。

当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都被同步地调用。

注释:绑定的多个函数会以队列的形式被调用,由于是同步的所以

const EventEmitter = require('events');

let emitter = new EventEmitter();

emitter.on('myEvent', () => {
for(let i = 0; i < 5000; i ++) {
console.log('ev1', i)
}
}); emitter.on('myEvent', () => {
console.log('hi 2');
});
emitter.emit('myEvent');
/* 输出结果
ev1 0
ev1 1
...
ev1 4999
hi 2
asdaaa
*/
const EventEmitter = require('events');

let emitter = new EventEmitter();

emitter.on('myEvent', () => {
console.log('hi');
emitter.emit('myEvent');
}); emitter.emit('myEvent');
/*
会产生死循环
Maximum call stack size exceeded
回调栈溢出
调用堆栈的溢出(大小超过最大)
*/

const EventEmitter = require('events');

let emitter = new EventEmitter();

emitter.on('myEvent', function sth () {
emitter.on('myEvent', sth);
console.log('hi');
}); emitter.emit('myEvent');
/*
监听器绑定会以2n的速度绑定,没几下就炸了 */


最新文章

  1. 读书笔记--SQL必知必会21--使用游标
  2. Centos下ACL(访问控制列表)介绍(转)
  3. [Tomcat 源码分析系列] (一) : Tomcat 启动脚本-startup.bat
  4. Halcon相机标定
  5. Weblogic 启动报错:java.lang.NoClassDefFoundError
  6. sizeof(class)
  7. 使用Adreno Profiler分析android游戏
  8. 【解惑】深入jar包:从jar包中读取资源文件
  9. 程序模拟浏览器请求及会话保持-python实现
  10. iphone:自定义UIAlertView
  11. Android 通过wifi调试程序【转】
  12. 运维自动化之SALTSTACK简单入门
  13. Python之matplotlib学习(一)
  14. oracle 常用select sql语句
  15. js 调用后台,后台调用js
  16. OC基础成员变量、属性变量、实例方法与类方法
  17. MySQL中的运算符和时间运算
  18. flex布局中flex-shrink的计算规则
  19. Python值hashlib详解
  20. JavaWeb项目通过调用cmd实现备份数据库的功能

热门文章

  1. SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
  2. swift 利用 Reflect(字典转模型)
  3. 【z05】聪明的质检员
  4. 英特尔投资:7200万美元投资12家创新公司,包括3家中国公司(www.intelcapital.com)
  5. mybatis逆向工程随笔
  6. 【C++竞赛 A】xxx的项链
  7. session了解及超时处理
  8. [Compose] 13. Lift into a Pointed Functor with of
  9. CRT(C Runtime Library)—— C/C++运行时库
  10. Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单