2.0.5 • Published 8 months ago
emitx v2.0.5
EmitX
English | 简体中文 一个强大而灵活的事件管理系统,支持异步操作和多种 Promise 策略。
✨ 特性
- 🔄 支持异步事件处理
- 🎯 多种 Promise 策略 (allSettled/all/race/any/no)
- 📝 内置事件记录器
- 🌐 支持 Node.js 和浏览器环境
- 🎨 灵活的事件触发控制
📦 安装
npm install emitx
# 或
yarn add emitx
🚀 快速开始
import { emitx } from 'emitx'
const eventManager = emitx()
// 注册事件
eventManager.on('userLogin', (data) => {
console.log('User logged in:', data)
})
// 触发事件
eventManager.emit('userLogin', { username: 'johndoe' })
📖 API 文档
基础事件操作
事件监听
// 普通监听
eventManager.on('eventName', callback)
// 一次性监听
eventManager.once('eventName', callback)
// 监听所有事件
eventManager.all((data) => {
console.log(`Event "${data.eventName}" triggered`)
})
事件触发
// 触发特定事件
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 (默认)
const eventManager = emitx()
eventManager.emit('asyncEvent', data).then(results => {
console.log('All promises settled:', results)
})
all
const eventManager = emitx({ promiseStrategy: 'all' })
race
const eventManager = emitx({ promiseStrategy: 'race' })
any
const eventManager = emitx({ promiseStrategy: 'any' })
事件记录器
import { createRecorder } from 'emitx'
const recorder = createRecorder({
maxRecord: 100,
isRecord: true,
changeRecord: (type, eventName, callback) => {
console.log(type, eventName, callback)
}
})
const eventManager = emitx({ recorder })
检查函数是否一次注册事件
import { isOnce } from 'emitx'
isOnce(callback)
工具方法
// 判断是否是否被注册
eventManager.isOn(callback)
// 获取所有事件
eventManager.getEvents()
// 获取所有回调
eventManager.getAllCallback()
// 移除事件
eventManager.off() // 清空所有
eventManager.off('eventName') // 清空特定事件
eventManager.off('eventName', fn) // 移除特定回调
🤝 贡献
欢迎提交 Issues 和 Pull Requests!
📄 License
MIT