当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

tseep

极速事件发射器
授权协议 MIT
开发语言 JavaScript TypeScript
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 不详
投 递 者 东郭臻
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

tseep 号称是”世界上最快的事件发射器“,在“经典 API 事件发射器”方面,比 eventemitter3 快12倍。

  • 基于事件映射的 emit 方法的全类型参数
  • 完全实现 NodeJS.EventEmitter 类型和标准,提供接口
  • 最快的pure-js EventEmitter
  • 使用 eventemitter 3测试进行全面测试

基准

emit-multiple-listeners:

tseep x            40,569,711 ops/sec  <---
EventEmitter1 x     4,498,223 ops/sec
EventEmitter2 x     4,536,296 ops/sec
EventEmitter3 x     5,852,395 ops/sec
fastemitter x       6,127,215 ops/sec
event-emitter x     3,449,595 ops/sec
contra/emitter x    2,186,002 ops/sec
tsee x              5,231,167 ops/sec
emitix x            6,549,983 ops/sec 
Fastest is [ 'tseep' ]

基准测试

安装和使用

npm i tseep

简单用法:

import { EventEmitter } from "tseep";

const events = new EventEmitter<{
    foo: (a: number, b: string) => void;
}>();

// foo's arguments is fully type checked
events.emit("foo", 123, "hello world");

API

EventEmitter<T> ,其中 T 延伸 { [eventName]: Call signature } 

EventEmitter.emit 的args基于事件映射完全类型化。

!! __proto__ 事件名称受限制(类型保护存在)!!

// Listener = (...args: any[]) => Promise<any>|void
// EventMap extends { [event in (string|symbol)]: Listener }

class EventEmitter<EventMap> {
    readonly maxListeners: number;
    readonly _eventsCount: number;

    emit(event: EventKey, ...args: ArgsN<EventMap[EventKey]>): boolean;
    on(event: EventKey, listener: EventMap[EventKey]): this;
    once(event: EventKey, listener: EventMap[EventKey]): this;
    addListener(event: EventKey, listener: EventMap[EventKey], argsNum?: ArgsNum<EventMap[EventKey]>): this;
    removeListener(event: EventKey, listener: EventMap[EventKey]): this;
    hasListeners(event: EventKey): boolean;
    prependListener(event: EventKey, listener: EventMap[EventKey]): this;
    prependOnceListener(event: EventKey, listener: EventMap[EventKey]): this;
    off(event: EventKey, listener: EventMap[EventKey]): this;
    removeAllListeners(event?: EventKey): this;
    setMaxListeners(n: number): this;
    getMaxListeners(): number;
    listeners(event: EventKey): EventMap[EventKey][];
    rawListeners(event: EventKey): EventMap[EventKey][];
    eventNames(): Array<string | symbol>;
    listenerCount(type: EventKey): number;
}
 相关资料
  • 我正在按照NestJS文档创建事件发射器(文档链接)。当我运行代码时,我得到一个错误: [Nest]129586-16/06/2021,20:43:31[ExceptionHandler]this.eventEmitter.emit不是函数 这就是我的代码的样子: 我不确定我错过了什么。

  • Node中的许多对象都会发出事件,例如net.Server每次对等体连接它时都会发出一个事件,fs.readStream会在打开文件时发出事件。 发出事件的所有对象都是events.EventEmitter的实例。 EventEmitter类 正如我们在上一节中看到的,EventEmitter类位于events模块中。 可通过以下代码访问 - // Import events module var

  • 问题内容: 我正在尝试使用SSE将JSON数据发送到浏览器,但似乎无法正确处理,而且我也不知道为什么。 服务器端看起来像这样: 如您所见,我已经注释掉了帖子内容,但最终我希望将testdata用作JSON本身,如下所示: 客户端看起来像这样: 我看到控制台日志,但 没有看到警报。 问题答案: 尝试发送适当的JSON(输出中未引用): 但最好:

  • 监听事件 事件处理是在节点(cc.Node)中完成的。对于组件,可以通过访问节点 this.node 来注册和监听事件。监听事件可以通过 this.node.on() 函数来注册,方法如下: cc.Class({ extends: cc.Component, properties: { }, onLoad: function () { this.node.on('mou

  • 1. 逻辑流程 注(1): 此处逻辑为可选逻辑,详情参见 【小程序深度对接->上报用户信息】 2. 集成步骤 2.1 添加发起会话按钮 <button open-type="contact" />咨询客服</button> 2.2 小能客户端配置小程序 登录小能客户端,设置->接入设置->第三方接入->小程序 ->点击按钮接入微信小程序 -> 选择极速模式 填写小程序信息 复制小能服务器信息,需

  • JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。