引用events模块中的EventEmitter

事件的监听和发射

相同的事件发射数量有限,可以通过setMaxListeners设置峰值

var EventEmitter = require('events').EventEmitter

var life = new EventEmitter()
//加不加都没有报警告
//life.setMaxListeners(10) life.on('clickEvent',function(who){
console.log('给' + who + ' 倒水')
}) life.emit('clickEvent','汉子1')

每个emit都有返回值,表示是否有相应的监听事件
var hasClickListener = life.emit('clickEvent','汉子12')
var hasChangeListener = life.emit('changeEvent','妹子1') console.log(hasClickListener)
console.log(hasChangeListener)
console.log(hasPutListener)
取消监听
//可以放到 on 和 emit 后面
function water(who){
console.log('给 ' + who + ' 倒水')
} life.on('changeEvent',water)
//还没有被取消,emit不能放到 on之前
life.emit('changeEvent','张三')
//water不可以用匿名函数,removeListener需要在emit之前
life.removeListener('changeEvent',water)
//移除所有监听,可以传递事件名作为参数
//life.removeAllListeners() var hasChangeListener = life.emit('changeEvent','妹子1')//监听被取消
var hasPutListener = life.emit('clickEvent','李白')
// //是否被监听
console.log(hasChangeListener)
console.log(hasPutListener)

监听数量
console.log('changeEvent:' + life.listeners('changeEvent').length)
console.log('clickEvent:' + life.listeners('clickEvent').length)
console.log('all:' + life.listeners.length)
//EventEmitter提供的方法
console.log('EventEmitter提供:')
console.log('changeEvent:' + EventEmitter.listenerCount(life,'changeEvent'))
console.log('clickEvent:' + EventEmitter.listenerCount(life,'clickEvent'))

08慕课网《进击Node.js基础(一)》事件events的更多相关文章

  1. 03慕课网《进击Node.js基础(一)》API-URL网址解析

    url url.parse(url,query,host);解析域名 url必须,地址字符串 query可选 host 可选:在不清楚协议时正确解析 querystring 字符串和对象之间互相解析 ...

  2. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  3. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  4. 07慕课网《进击Node.js基础(一)》HTTP小爬虫

    获取HTML页面 var http = require('http') var url='http://www.imooc.com/learn/348' http.get(url,function(r ...

  5. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  6. 02慕课网《进击Node.js基础(一)》——CommonJs标准

    是一套规范管理模块 每个js 为一个模块,多个模块作为一个包 node.js和Couchdb是对其的实现: 不同于jQuery 模块:定义.标识.引用(地址/模块名称) 模块类型: 核心模块http ...

  7. 进击Node.js基础(一)

    一.前言 1:Node.js本质上是用chrome浏览器 v8引擎 使用c++编写的JS运行环境 2:相比于JS没有浏览器安全级的限制,额外提供了一些系统级的API:文件读写,进程管理,网络通信等. ...

  8. 04慕课网《进击Node.js基础(一)》HTTP讲解

    HTTP:通信协议 流程概述: http客户端发起请求,创建端口默认8080 http服务器在端口监听客户端请求 http服务器向客户端返回状态和内容 稍微详细解析: 1.域名解析:浏览器搜素自身的D ...

  9. 11慕课网《进击Node.js基础(一)》Buffer和Stream

    Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...

随机推荐

  1. oracle错误分析:ora-04063:view view_test has errors

    百度了一下,有一个大佬是这样说的: 在PL/SQL中查询数据库视图时总是报告“ora-04063:view view_test has errors”的错误: Oracle视图非常强大的功能之一在于其 ...

  2. CentOS 7 配置阿里云本地yum源

    删除原有的yum源: rm -f /etc/yum.repos.d/* 重新下载阿里云的yum源: wget -O /etc/yum.repos.d/CentOS-Base.repo http://m ...

  3. Kafka使用jmxtrans+influxdb+grafana监控JMX指标

    最近在搞Kafka集群监控,之前也是看了网上的很多资料.之所以使用jmxtrans+influxdb+grafana是因为界面酷炫,可以定制化,缺点是不能操作Kafka集群,可能需要配合Kafka M ...

  4. 高德地图API(流程法)整理分析

    [高德地图API(流程法)分析]: 前言:公司现在的网约车项目,使用的是高德地图,因为地图导航这一块的功能占比量比较大,为了方便大家对高德地图API的了解和学习使用,使用流程图把高德API分析整理了下 ...

  5. Java——String类总结---18.09.27

    1.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创 ...

  6. angularjs animation

    http://augus.github.io/ngAnimate/ http://www.nganimate.org/angularjs/ng-repeat/move http://codepen.i ...

  7. 2017-2018-1 20155313 《信息安全系统设计基础》 Myod

    2017-2018-1 20155313 <信息安全系统设计基础> Myod Myod要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tx - ...

  8. 20155332 linux进程间通信(IPC)机制(未完成,待续)

    linux进程间通信(IPC)机制 1.共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在该进程的地址空间(这里的地址空间具体是哪个 ...

  9. 游戏手柄(JoyStick)编程学习笔记(2)

    在我的上一篇博客中(http://blog.csdn.net/liyuanbhu/article/details/51714045),介绍了通过 multimedia joystick API 来访问 ...

  10. windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...