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 中有很多对象 ...
随机推荐
- Android Ant 和 Gradle 打包流程和效率对照
一.Ant 打包:(下载ant.配置环境变量就不说了) 1.进入命令行模式,并切换到项目文件夹.运行例如以下命令为ADT创建的项目加入ant build支持: android update proje ...
- 王立平--Program Files (x86)
window7根据系统.program files(x86) 它是应用程序目录,在64下位系统.为了更好的相容性32位程序,在一些安装32位程序(请注意,有些节目自己是32位),将默认被安装progr ...
- Jquery 时间格式化
var TimeObjectUtil;/** * @title 时间工具类 * @note 本类一律违规验证返回false * @author {boonyachengdu@gmail.com} * ...
- C#遍历FTP文件夹/下载
原文链接:http://blog.csdn.net/ou8811/article/details/5295780 整个程序大致可以分为2个部分,第一部分是实现单个文件下载的方法 [c-sharp] v ...
- 排序算法c语言描述---冒泡排序
排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...
- 深度分析DataTable如何筛选
这项DataTable指SpryMedia专为HTML Table设计的插件页面和发展,官方网站:http://legacy.datatables.net/index. 左右oSettings.aiD ...
- SpringSecutiry权限管理手册
SpringSecutiry权限管理手册: 请见以下URL: http://www.mossle.com/docs/auth/html/preface.html Spring Security 参考文 ...
- MVC模型与FishiGUI应用层MVC型号
MVC概要: MVC (Modal View Controler)M是指数据模型,V是指用户界面,C则是控制器. 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序能够使用不同的表现形式.比方 ...
- 动态Lambda进阶一
直接上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- [LeetCode]Word Ladder 最短距离字符串转换 (Dijkstra)
要求最短距离.采纳dijkstra查找节点之间的最短路径. 当心:假设是一个枚举字典22是否元素可以,如果转换,暂停. 提高:每串,带您历数它的字符值事件,对于的长度n一个字符串枚举n*26次要. 设 ...