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手冊-事件的更多相关文章

  1. Node.js v0.10.31API手冊-控制台

    Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...

  2. Node.js v0.10.31API手工-DNS

    原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...

  3. Node.js V0.12新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化.本文会介绍其中最值得注意的几个. 支持塞住模式的可写流 现在可写流可以 ...

  4. 【译】 Node.js v0.12的新特性 -- 性能优化

    原文: https://strongloop.com/strongblog/performance-node-js-v-0-12-whats-new/ January 21, 2014/in Comm ...

  5. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

  6. Node.js V0.12 新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化. 本文会介绍其中最值得注意的几个. http://www.infoq. ...

  7. Node.js学习笔记(三): 事件机制

    大部分的nodejs核心api都建立在异步的事件驱动架构之上,所以events是Node.js 最重要的模块,它提供了唯一的接口.events 模块不仅用于用户代码与 Node.js 下层事件循环的交 ...

  8. node.js学习笔记(三)——事件循环

    要理解事件循环,首先要理解事件驱动编程(Event Driven Programming).它出现在1960年.如今,事件驱动编程在UI编程中大量使用.JavaScript的一个主要用途是与DOM交互 ...

  9. Node.js实战10:“流”是Node.js最强大的功能之一。

    流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...

随机推荐

  1. HDU 4380 Farmer Greedy 计算几何+bitset

    枚举直线,对于直线的某个点在直线的左端还是右端,能够状压出一个数.用bitset记录. 然后三角形就是3个bitset&一下 #include <cstdio> #include ...

  2. 《深入理解mybatis原理》 Mybatis初始化机制具体解释

    对于不论什么框架而言.在使用前都要进行一系列的初始化,MyBatis也不例外. 本章将通过下面几点具体介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XM ...

  3. 一个非常优秀的前端框架--BootStrap

    在接触BootStrap之前,也许我们已经度过了很多关于前端开发的框架及

  4. Core 1.0中的管道-中间件模式

    ASP.NET Core 1.0中的管道-中间件模式 SP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middlewar ...

  5. 分布式MySQL数据库TDSQL架构分析

    摘要:腾讯计费平台部为了解决基于内存的NoSQL解决方式HOLD平台在应对多种业务接入时的不足.结合团队在MySQL领域多年应用和优化经验,终于在MySQL存储引擎基础上,打造一套分布式SQL系统TD ...

  6. 初识google多语言通信框架gRPC系列(三)C#中使用gRPC

    我的这几篇文章都是使用gRPC的example,不是直接编译example,而是新建一个项目,从添加依赖,编译example代码,执行example.这样做可以为我们创建自己的项目提供借鉴.如果对gR ...

  7. 小米2S Mk6.0.1 [只能做测试体验,不能使用]

    上几张高清图片.. 说明: 此版本只能做测试体验,不能做实际使用. 开发者: laser杨万荣 感谢: 秋叶随风ivan, m1cha 及 MoKee Open Source的各位开发者 下载地址:链 ...

  8. 03.Msbuild

    MSBuild的深入认识 分类: 专题开发 自动化 2009-01-20 11:56 5711人阅读 评论(1) 收藏 举报 任务引擎脚本工作扩展build 最近在从事自动构造工作的过程中,对MSBu ...

  9. 【从翻译mos文章】rac数据库,HC_&lt;SID&gt;.dat其他文件Oracle_Home用例下。

    rac数据库.HC_<SID>.dat其他文件Oracle_Home用例下. 参考原始: RAC database HC_<SID>.dat is used by instan ...

  10. 解析DBR操作系统引导记录数据

    理解文件系统.你必须要熟悉DBR,下面我们就来看看文件系统解析DBR数据. Dos Boot Record(DBR)操作系统引导记录是由操作系统的格式化程序建立的.在文件系统驱动操作不论什么一个磁盘卷 ...