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'
event
String 事件名listener
Function事件处理函数
在加入 listener 时会发生该事件。 此时无法确定 listener
是否在 emitter.listeners(event)返回的列表中。
事件: 'removeListener'
event
String 事件名listener
Function 事件处理函数
在移除 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 中有很多对象 ...
随机推荐
- Jsoup 抓取和数据页 认识HTTP头
推荐一本书:黑客攻防技术宝典.Web实战篇 : 顺便留下一个疑问:能否通过jsoup大量并发訪问web或者小型域名server,使其瘫痪?其有用jsoup熟悉的朋友能够用它解析url来干 ...
- POJ 1287 Networking(最小生成树)
题意 给你n个点 m条边 求最小生成树的权 这是最裸的最小生成树了 #include<cstdio> #include<cstring> #include<algor ...
- 【从翻译mos文章】在OGG (Oracle GoldenGate) 正在使用SCHEMATRANDATA如果,需要额外的db patch
在OGG (Oracle GoldenGate) 正在使用SCHEMATRANDATA如果.需要额外的db patch 参考原始: Patches needed to support SCHEMATR ...
- Linux 该文件命令查看内容
Linux系统,请使用以下命令来查看文件的内容: cat tac 从最后一行開始显示.能够看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 ...
- android LinearLayout等view如何获取button效果
我们可以给LinearLayout以及一切继承自View的控件,设置View.onClickListener监听,例如LInearLayout. 但是我们发现LinearLayout可以执行监听方法体 ...
- 谈谈Linux内存释放
上上周吧,一个朋友问我说他公司的服务器内存free 为0 是为什么,意思大概是内存去哪了,这引发了一个小小的讨论,也就是内存释放的问题… 首先我们可能会用free 去查看内存的使用率,它应该是这样的 ...
- 傻瓜式破解linux--rootpassword
破password的方法: 方法1.单用户模式改动 (表示进入到单用户模式) .按回车键.按b键启动.进入单用户模式,进行password改动.重新启动 init 5 口诀:e2e 空格1 回车b 开 ...
- uva-442 Matrix Chain Multiplication
Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since ma ...
- Cocos2d-x学习笔记(五岁以下儿童) 精灵两种方式播放动画
这几天在看控件类,临时没有想好实际运用的方向.单纯的创建网上已经有非常多这方面的样例,我就不写了.接下来是学习精灵类.精灵类若是单独学习也是非常easy.于是我加了一些有关动画方面的知识点与精灵 ...
- ODAC配置
1.安装Oracle11g服务端 2.安装ODAC ODTwithODAC121012 3.拷贝Oracle11g服务端: F:\app\adccTest\pro ...