(Ryan的Koa系列博客)4.依赖库:events概述

前言

events库是node的内置库的内容,简单点说就是node的事件发布器。(订阅\发布)
node的事件发布器可以为所有的引擎提供事件发布功能。

安装

npm install events

依赖

var EventEmitter = require('events').EventEmitter

node的事件机制

大多数 Node.js 核心 API 都是采用惯用的异步事件驱动架构,其中某些类型的对象(一般称为触发器emitters)会周期性地发送(触发)被命名好的相关事件来调用被称为监听器的函数对象(一般称为触发器listeners)。

例如:
每次对等连接(a peer connects to it)时或者新的连接时,一个服务器(net.Server)对象都会发出(触发)一个事件;
当文件打开时,一个文件流(fs.ReadStream)对象都会发出(触发)一个事件;
只要数据可用被读取,一个流(stream )对象都会发出(触发)一个事件。

所有能发送(触发)事件的对象都是EventEmitter类的实例。这些对象都会暴露一个名为eventEmitter.on()的函数,并允许一个或者多个函数通过这个对象与一些有名字的事件关联到一起。事件名通常都是驼峰形式的字符串,但是,也可以用任何有效的js属性键作为事件名。

???
当EventEmitter对象发出一个事件时,所有附加在特定事件上的函数都被同步地调用,被调用的监听器返回的任何值将被忽略和丢弃。(什么叫做:被调用的监听器返回的任何值将被忽略和丢弃?是不是正是因为如此,才需要使用高级函数呢?)
???

以下例子展示了一个只有单个监听器(listener)的 EventEmitter 实例。 eventEmitter.on() 方法用于注册监听器(listener),eventEmitter.emit() 方法用于触发事件。下面我们看一个例子:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
console.log('开始注册事件');
myEmitter.on('event', () => {
    console.log('发生了一个事件');
});
console.log('开始触发事件事件');
myEmitter.emit(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值