mirror of
https://github.com/ragestudio/linebridge.git
synced 2025-06-09 10:34:17 +00:00
added event_emitter
lib
This commit is contained in:
parent
218bb7e2b0
commit
75251be768
65
src/lib/event_emitter/index.js
Normal file
65
src/lib/event_emitter/index.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
export default class EventEmitter {
|
||||||
|
#events = {}
|
||||||
|
|
||||||
|
on = (eventName, listener) => {
|
||||||
|
if (!this.#events[eventName]) {
|
||||||
|
this.#events[eventName] = []
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#events[eventName].push(listener)
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
emit = (eventName, ...args) => {
|
||||||
|
if (!this.#events[eventName]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#events[eventName].forEach((listener) => {
|
||||||
|
listener(...args)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
off = (eventName, listener) => {
|
||||||
|
if (!this.#events[eventName]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const index = this.#events[eventName].indexOf(listener)
|
||||||
|
|
||||||
|
if (index > -1) {
|
||||||
|
this.#events[eventName].splice(index, 1)
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
removeAllListeners = (eventName) => {
|
||||||
|
if (!this.#events[eventName]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#events[eventName] = []
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
awaitEmit = async (eventName, ...args) => {
|
||||||
|
if (!this.#events[eventName]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(this.#events[eventName].map(async (listener) => {
|
||||||
|
await listener(...args)
|
||||||
|
}))
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
hasEvent = (eventName) => {
|
||||||
|
return !!this.#events[eventName]
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user