douyin/src/utils/bus.js
2023-02-06 00:14:05 +08:00

46 lines
995 B
JavaScript

export default {
eventMap: new Map(),
on(eventType, cb) {
let cbs = this.eventMap.get(eventType)
if (cbs) {
cbs.push(cb)
} else {
cbs = [cb]
}
if (cbs.length > 10) {
console.error('eventMap', this.eventMap)
}
this.eventMap.set(eventType, cbs)
},
off(eventType, fn) {
let cbs = this.eventMap.has(eventType);
if (cbs) {
if (fn) {
let cbs = this.eventMap.get(eventType)
let rIndex = cbs.findIndex(v => v === fn)
if (rIndex > -1) {
cbs.splice(rIndex, 1)
}
this.eventMap.set(eventType, cbs)
} else {
this.eventMap.delete(eventType);
}
}
},
offAll() {
this.eventMap = new Map()
},
emit(eventType, val) {
let cbs = this.eventMap.get(eventType)
if (cbs) {
cbs.map(cb => cb(val))
}
}
}
export const EVENT_KEY = {
ENTER_FULLSCREEN: 'ENTER_FULLSCREEN',
EXIT_FULLSCREEN: 'EXIT_FULLSCREEN',
TOGGLE_COMMENT: 'TOGGLE_COMMENT',
}