Node.js v0.10.31API手冊-事件
Node.js v0.10.31API手冊-文件夹
Events(事件)
Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件,
一个fs.readStream对象会在文件被打开的时候发出一个事件。
全部这些产生事件的对象都是events.EventEmitter的实例。
你能够通过require("events")来訪问该模块。
通常,事件名是驼峰命名 (camel-cased) 的字符串。只是也没有强制的要求,不论什么字符串都是能够使用的。
为了处理发出的事件。我们将函数
(Function) 关联到对象上。 我们把这些函数称为 监听器 (listeners)。 在监听函数中 this 指向当前监听函数所关联的EventEmitter 对象。
类: events.EventEmitter
通过require('events').EventEmitter 获取
EventEmitter 类。
当 EventEmitter 实例遇到错误,通常的处理方法是产生一个'error' 事件,node
对错误事件做特殊处理。 假设程序没有监听错误事件,程序会依照默认行为在打印出 栈追踪信息 (stack trace) 后退出。
全部EventEmitter
会在加入 listener 时触发'newListener'事件。删除
listener 时触发 'removeListener' 事件。
emitter.addListener(event, listener)
emitter.on(event, listener)
加入一个 listener 至特定事件的 listener 数组尾部。
server.on('connection', function (stream) {
console.log('someone connected!');
});
返回 emitter,方便链式调用。
emitter.once(event, listener)
加入一个 一次性 listener。这个
listener 仅仅会在下一次事件发生时被触发一次,触发完毕后就被删除。
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});
返回 emitter,方便链式调用。
emitter.removeListener(event, listener)
以指定事件从 listener 数组中删除一个 listener 。注意:此操作会改变
listener 数组中在当前 listener 后的listener 的位置下标。
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
返回 emitter,方便链式调用。
emitter.removeAllListeners([event])
删除全部 listener,或者删除某些事件 (event) 的 listener。
返回
emitter,方便链式调用。
emitter.setMaxListeners(n)
在默认情况下。EventEmitter 会在多于 10 个 listener 监听某个事件的时候出现警告,此限制在寻找内存泄露时很实用。
显然,也不是全部的 Emitter 事件都要被限制在 10 个 listener 下面,在这样的情况下能够使用这个函数来改变这个限制。设置0为没有限制。
emitter.listeners(event)
返回指定事件的 listener 数组。
erver.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]
emitter.emit(event, [arg1], [arg2], [...])
使用提供的參数按顺序运行指定事件的 listener。
若事件有
listeners 则返回 true 否则返回 false 。
类方法: EventEmitter.listenerCount(emitter, event)
返回指定事件的 listeners 个数。
事件: 'newListener'
eventString 事件名listenerFunction事件处理函数
在加入 listener 时会发生该事件。 此时无法确定 listener 是否在 emitter.listeners(event)返回的列表中。
事件: 'removeListener'
eventString 事件名listenerFunction 事件处理函数
在移除 listener 时会发生该事件。 此时无法确定 listener 是否在emitter.listeners(event)返回的列表中。
Node.js v0.10.31API手冊-事件的更多相关文章
- Node.js v0.10.31API手冊-控制台
Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...
- Node.js v0.10.31API手工-DNS
原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...
- Node.js V0.12新特性之性能优化
v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化.本文会介绍其中最值得注意的几个. 支持塞住模式的可写流 现在可写流可以 ...
- 【译】 Node.js v0.12的新特性 -- 性能优化
原文: https://strongloop.com/strongblog/performance-node-js-v-0-12-whats-new/ January 21, 2014/in Comm ...
- 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡
原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...
- Node.js V0.12 新特性之性能优化
v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化. 本文会介绍其中最值得注意的几个. http://www.infoq. ...
- Node.js学习笔记(三): 事件机制
大部分的nodejs核心api都建立在异步的事件驱动架构之上,所以events是Node.js 最重要的模块,它提供了唯一的接口.events 模块不仅用于用户代码与 Node.js 下层事件循环的交 ...
- node.js学习笔记(三)——事件循环
要理解事件循环,首先要理解事件驱动编程(Event Driven Programming).它出现在1960年.如今,事件驱动编程在UI编程中大量使用.JavaScript的一个主要用途是与DOM交互 ...
- Node.js实战10:“流”是Node.js最强大的功能之一。
流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...
随机推荐
- Struts 2 初学的复习巩固
Q:使用Struts2 开发程序的基本步骤? A: 1)加载Struts2类库: 2)配置web.xml文件,定义核心Filter来拦截用户请求: 3)开发视图层页面,即JSP页面: 4)定义处理用户 ...
- ListView IllegalStateException
贴出源代码: android.widget.ListView ... if(mItemCount == 0){ resetList(); invokeOnItemScrollListener(); r ...
- MySQL基金会-基本数据库操作
1. 删除数据库 DROP DATABASE 数据库名; mysql> drop database test; 即删除数据库模式 2 .创建数据库 create DATABASE 数据库名; m ...
- 基于opencv在摄像头ubuntu根据视频获取
基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 :UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考h ...
- Android学习笔记(四十):Preference使用
Preference从字面上看偏好,译为首选项. 一些配置数据,一些我们上次点击选择的内容.我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择.Android提供preference这 ...
- Word001
C# Word 类库 2009-08-06 22:10 13470人阅读 评论(10) 收藏 举报 c#objectstring文档microsoftexcel using System;using ...
- JavaScript动漫作品(闭幕)
笔者:Steven Riche 发布时间:2014年2一个月18 原文链接:http://code.tutsplus.com/tutorials/javascript-animation-that-w ...
- Godaddy Drupal Update
Godaddy对Drupal默认安装仅仅支持到7.22,眼下Drupal已经升级到7.28,安装完Drupal 7.22后,仅仅能手工升级. 安装Drupal在:https://hostingconn ...
- Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)
原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据 ...
- ZOJ3827 ACM-ICPC 2014 亚洲区域赛的比赛现场牡丹江I称号 Information Entropy 水的问题
Information Entropy Time Limit: 2 Seconds Memory Limit: 131072 KB Special Judge Informatio ...