2.0.5 • Published 8 months ago

emitx v2.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

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

2.0.3

8 months ago

2.0.5

8 months ago

2.0.4

8 months ago

2.0.0

9 months ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago