# emitx **Repository Path**: jieceng/emitx ## Basic Information - **Project Name**: emitx - **Description**: emitx是一个灵活的事件管理系统,支持事件的注册、触发、移除以及一次性监听等功能。支持node, 浏览器环境,它可以方便地用于事件驱动的编程,尤其适合需要异步操作、事件回调管理的场景。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-14 - **Last Updated**: 2024-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EmitX [English](README.md) | [简体中文](README.zh-CN.md) 一个强大而灵活的事件管理系统,支持异步操作和多种 Promise 策略。 ## ✨ 特性 - 🔄 支持异步事件处理 - 🎯 多种 Promise 策略 (allSettled/all/race/any/no) - 📝 内置事件记录器 - 🌐 支持 Node.js 和浏览器环境 - 🎨 灵活的事件触发控制 ## 📦 安装 ```bash npm install emitx # 或 yarn add emitx ``` ## 🚀 快速开始 ```js import { emitx } from 'emitx' const eventManager = emitx() // 注册事件 eventManager.on('userLogin', (data) => { console.log('User logged in:', data) }) // 触发事件 eventManager.emit('userLogin', { username: 'johndoe' }) ``` ## 📖 API 文档 ### 基础事件操作 #### 事件监听 ```js // 普通监听 eventManager.on('eventName', callback) // 一次性监听 eventManager.once('eventName', callback) // 监听所有事件 eventManager.all((data) => { console.log(`Event "${data.eventName}" triggered`) }) ``` #### 事件触发 ```js // 触发特定事件 eventManager.emit('eventName', data) // 传参数式触发 const eventName = createEventName('eventName', { promiseStrategy: 'all' }) eventManager.emit('eventName', data) // 触发所有事件 eventManager.emit('*', data) // 或 eventManager.emit('all', data) ``` ### Promise 策略 EmitX 支持多种 Promise 处理策略: #### allSettled (默认) ```js const eventManager = emitx() eventManager.emit('asyncEvent', data).then(results => { console.log('All promises settled:', results) }) ``` #### all ```js const eventManager = emitx({ promiseStrategy: 'all' }) ``` #### race ```js const eventManager = emitx({ promiseStrategy: 'race' }) ``` #### any ```js const eventManager = emitx({ promiseStrategy: 'any' }) ``` ### 事件记录器 ```js import { createRecorder } from 'emitx' const recorder = createRecorder({ maxRecord: 100, isRecord: true, changeRecord: (type, eventName, callback) => { console.log(type, eventName, callback) } }) const eventManager = emitx({ recorder }) ``` ### 检查函数是否一次注册事件 ```js import { isOnce } from 'emitx' isOnce(callback) ``` ### 工具方法 ```js // 判断是否是否被注册 eventManager.isOn(callback) // 获取所有事件 eventManager.getEvents() // 获取所有回调 eventManager.getAllCallback() // 移除事件 eventManager.off() // 清空所有 eventManager.off('eventName') // 清空特定事件 eventManager.off('eventName', fn) // 移除特定回调 ``` ## 🤝 贡献 欢迎提交 Issues 和 Pull Requests! ## 📄 License MIT