NodeJS 事件系统详解

本文详细介绍了NodeJS的事件系统,包括如何引入events模块,触发和绑定事件,监听器的类型及其管理,以及EventEmitter的内部结构。通过实例展示了事件驱动的生物种群模拟,同时探讨了_event、_eventsCount和_maxListeners等关键属性。
摘要由CSDN通过智能技术生成

NodeJS 事件系统是很多其它NodeJS系统(如net、http(s)等)的基础之一。

事件系统可以定义自己的一套事件系统,并绑定若干处理事件。

事件系统封装在NodeJS的 events 包里,具体API与官方说明参见官方文档


基本使用姿势

引入 events 包

var events = require('events');

这个 events 是一个类(JS中类即函数),它还有几个成员,其中EventEmitter 这个类跟events类是一样的,这样写的目的是为了跨版本兼容(Node 自身的 API 版本变动)。

events === events.EventEmitter; // true

事件发射器(EventEmitter) 就是一个管理一组事件的对象。

var myEvent = new events(); // create a new event emitter object

触发事件

触发事件使用emitter.emit(eventName: String[, ...argv: Any ]); 来触发,顺便可以在这里传入任意个数、格式不限的参数。

class Person {
   
    constructor (name) { 
        this.name = name; 
    }
    destroy () {
        console.log(this.name, 'dead');
    }
}
var Riki = new Person('Riki');
myEvent.on('go-die', person => person.destroy());
myEvent.emit('go-die', Riki); // Riki dead

为事件绑定监听器

有的人喜欢称呼这个动作为”绑定事件”,然而这个说法并不好,因为每个事件名可以对应若干监听器(listener),准确的说应该是为事件绑定监听器,或者是将监听器绑定到事件上。

一次性监听器

一次性监听器在绑定后,只能被触发一次,触发后就自我销毁,下次再触发同样的事件也不会再响应。

使用emitter.once(eve

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值