# Event Hub **Repository Path**: noway56/event-hub ## Basic Information - **Project Name**: Event Hub - **Description**: 管理所有事件 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-19 - **Last Updated**: 2022-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Event Hub 多快好省的事件中心库 ## 目录 - [特点](#特点) - [安装](#安装) - [使用](#使用) - [参与贡献](#参与贡献) - [License](#license) ## 特点 ```typescript public subscriber: Map> = new Map(); ``` `EventHub` 使用 [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) 和 [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) 来储存及索引 `EventHandler`,与使用 `Object` 和 `Array` 相比,具有更好的性能和更简洁的代码来实现核心功能。 > 缺点是只支持 `ES6` 以上运行环境(因为至少到 `ES6` 才有 `Map` 和 `Set`),当然也可以转译到 `ES5` 但性能优势便不复存在。 ## 安装 ```cmd npm i @a-z.ren/event-hub ``` ## 使用 JavaScript ```javascript import EventHub from "@a-z.ren/event-hub"; ``` TypeScript ```typescript import EventHub from "@a-z.ren/event-hub/src/EventHub"; ``` 基础功能: ```javascript const eventHub = new EventHub(); function handlerA() { console.log("I'm A!"); } eventHub.on("1", handlerA); eventHub.on("1", (a, b) => console.log(`I'm B, I like ${a} and ${b}!`)); eventHub.once("1", () => console.log("I'm C, I only be triggered once!")); eventHub.emit("1", "🐱", "🐶"); // I'm A! // I'm B, I like 🐱 and 🐶! // I'm C, I only be triggered once! eventHub.off("1", handlerA); eventHub.emit("1", "🍦", "🍰"); // I'm B, I like 🍦 and 🍰! ``` Promise 和 Async/Await: ```javascript (async function () { const value = await eventHub.promise("2"); console.log("Await " + value); })(); eventHub .promise("2") .then((value) => "Then " + value) .then(console.log); eventHub.emit("2", "Hello"); // Await Hello // Then Hello ``` 继承类 ```javascript class ChatCat extends EventHub { sayHello() { this.emit("say", "Hello!"); } sayGood() { this.emit("say", "Good!"); } } const cat = new ChatCat(); cat.on("say", console.log); cat.sayHello(); // Hello! cat.sayGood(); // Good! ``` 发布事件并收集结果 ```javascript eventHub.on("4", (value) => "Love " + value); eventHub.once("4", (value) => "Good " + value); eventHub.gather("4", "gather").forEach((result) => console.log(result)); // Love gather // Good gather ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## License [MIT](LICENSE) © A-Z.REn