Node.js 事件发射器和监听器
来源:互联网 发布:淘宝朋友代付怎么没了 编辑:程序博客网 时间:2024/05/17 07:33
可以使用Node.js的内置模块创建自定义事件,并实现当一个事件被触发时执行的监听器回调。
1 将自定义事件添加到JavaScript对象上
事件使用一个EventEmitter对象来发出。这个对象包含在events模块中。emit(eventName, [args])函数触发eventName事件,包括所提供的参数。下面代码展示了如何实现一个简单的事件发射器:
var events = require('events');var emitter = new events.EventEmitter();emitter.emit('simpleEvent');
可以这样把事件添加到JS对象上。
var events = require("events");var util = require('util');function Obj() { this.do = function () { console.log(1); this.emit('consoled'); }}util.inherits(Obj, events.EventEmitter);
这样便在对象Obj的do()函数上定义了一个consoled事件,每当调用Obj对象实例的do()函数便发射出事件“consoled”。
2 把事件监听器添加到对象上
一旦有了一个可以发出事件的对象实例,便可以为对象实例添加事件监听器监听所关心的事件,事件监听器有如下3中方式:
- .addListener(eventName, callback);
- .on(eventName, callback);
- once(eventName, callback); 这个是只有eventName事件第一次被触发时,回调函数才被放置在事件队列中执行。
可以为Obj对象实例这样添加监听器:
var obj = new Obj();obj.on('consoled', function () { console.log(2);});obj.do();
输出:
12
3 示例程序:
var events = require("events");var util = require('util');function Account() { this.balance = 0; this.deposite = function (amount) { this.balance += amount; this.emit('balanceChanged'); } this.withDraw = function (amount) { if (this.balance > 0) { this.balance -= amount; this.emit('balanceChanged'); } else { return; } }}util.inherits(Account, events.EventEmitter);function displayBalance() { console.log("账户余额:%d", this.balance);}function checkOverDraw(self) { if (self.balance <= 0) { console.log("余额不足,无法取款"); return false; } return true;}var account = new Account();account.on("balanceChanged", displayBalance);account.on("balanceChanged", function () { if (checkOverDraw(this)) { console.log("存款可取"); }});account.deposite(300);account.deposite(600);account.deposite(500);account.withDraw(1400);account.withDraw(200);
输出:
账户余额:300存款可取账户余额:900存款可取账户余额:1400存款可取账户余额:0余额不足,无法取款
0 0
- node.js实现事件发射器和监听器
- Node.js 事件发射器和监听器
- Node.js事件发射器
- Node.js事件发射器
- 创建Node.js事件发射器
- Node.js EventEmitter事件发射器
- node.js事件监听器
- Node.js EventEmmitter事件监听器
- node的事件发射器EventEmitter
- 【Node.js基础篇】(七)Node异步编程之事件发射器
- Node 学习笔记之事件发射器
- node.js + MongoDB + AngularJS - 4 事件、监听器、定时器、回调
- JS事件监听器
- JS事件监听器
- JS事件监听器
- node.js实战学习笔记02--扩展事件监听器实现文件监听
- Java事件和监听器
- 事件和监听器
- SQL Server 字段设置默认值
- 一个字符串分隔多个参数存储过程调试
- 通过多重循环来遍历复杂json(json里面嵌套json)
- Spring事物管理的四种方式
- Lua数据结构。
- Node.js 事件发射器和监听器
- 浏览器查看信息妙用
- Java分页算法_3个最常用的
- java读取UTF-8的txt文件发现开头的一个字符问题
- 程序中的某一数据不能提交
- java学习笔记12——IO流解析
- 操作系统相关概念
- js跳转级别控制:js中跳转到父子区别
- js parent widow top使用