node的事件发射器EventEmitter
来源:互联网 发布:国家数据 编辑:程序博客网 时间:2024/05/18 19:37
核心事件模块 events
我们说node是基于事件驱动的、异步的、单线程的平台,因此,事件驱动在node中处于非常核心的位置。在node中,有一个核心的模块叫做events,该模块提供了一个核心的类:EventEmiiter。引入该模块:
var events = require("events");
事件发射器EventEmitter
EventEmitter(事件发射器)是node的核心部分,所有能够发射事件的类都继承于它,同时,也可以通过继承EventEmitter开发自己的事件发射器。创建EventMitter:
var EventEmitter= require('events').EventEmitter;var channel = new EventEmitter();
或者:
var events = require('events');var channel = new events.EventEmitter();
1、监听器listeners
绑定到对象上的方法,在事件发射时执行,那么这种方法被称为做监听器(listeners)。在监听器方法内部,this关键字指向的对象为该监听器关联的EventListener。
2、监听器的添加
2.1 重复性事件每次触发事件,监听都重复执行,这样的事件称为“重复性事件”。
emitter.addListener(event, listener)
或者更简单的方式:
emitter.on(event, listener)
例如,以下代码给server对象添加一个connection事件的监听器,仅仅打印了一句话:
server.on('connection', function (stream) {console.log('someone connected!');});
但是,这种方式添加的监听函数,在每次事件被触发的时候都会执行一次,这种事件称为“重复性事件”,接下来我们看看一次性事件监听。
2.2 一次性事件
当第一次触发事件时,事件监听执行一次,然后立即被移出,再次触发事件时不会在被执行,这种事件成为“一次性事件”。
添加一次性事件监听的api:
emitter.once(event, listener)
例如,下边的代码,仅在第一次connect事件触发时执行一次监听函数:
server.once('connection', function (stream) { console.log('Ah, we have our first user!');});
监听器的移除
emitter.removeListener(event, listener)
其他api
- 移除全部listner:
emitter.removeAllListeners([event])
- 设置最大监听器数量:
emitter.setMaxListeners(n)
默认不超过10个,否则会警告,设置为0表示无限制。 - 查看某一个对象在某一个事件的监听器:
emitter.listeners(event)
- 触发事件,执行监听器:
emitter.emit(event[, arg1][, arg2][, ...])
- 获取对象的给定事件的监听数量:
Class Method: EventEmitter.listenerCount(emitter, event)
Event: 'newListener'
:当添加监听器时触发该事件,当该事件触发时,监听器可能还没有添加完成Event: 'removeListener'
:当移除监听器时触发该事件,当该事件触发时,监听器可能还没有移除完成
- 移除全部listner:
阅读全文
0 0
- node的事件发射器EventEmitter
- Node.js EventEmitter事件发射器
- EventEmitter(事件监听/发射器 )
- node 事件模板 EventEmitter 的应用
- Node.js事件发射器
- Node.js事件发射器
- Node.js EventEmitter 事件监听
- 创建Node.js事件发射器
- nodejs的事件EventEmitter
- node.js 使用-事件处理(EventEmitter)
- node eventEmitter
- Node 学习笔记之事件发射器
- node.js实现事件发射器和监听器
- Node.js 事件发射器和监听器
- nodejs系列学习:事件发射器EventEmitter与android中的eventBus对比-----(四)
- Node.js中“同步”的EventEmitter
- 关于Node.js的events.EventEmitter
- Node.Js events模块(二)-EventEmitter自定义操作事件
- java concurrent-ConcurrentHashMap
- 感觉需要的内容
- Linux基础之重定向
- maven 安装 、更新插件出错 An error occurred while uninstalling session context was:(profile=epp.package
- Byte源码解读.md
- node的事件发射器EventEmitter
- JVM CMS GC收集器
- pat-advanced-1025
- Codeforces 612D The Union of k-Segments
- 求数组中次数超过一半的数字
- 进程
- Okhttp源码分析(五)连接池
- 可用:zlib-1.2.11.tar+openssl-1.0.2l.tar+curl-7.54.1.tar纯静态编译
- android 约束布局案例