8d73e917
陈威
初始化提交
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/**
* User: CHT
* Date: 2020/6/3
* Time: 14:53
*/
export default class GraphEvent {
constructor () {
this.listeners = {}
}
add (type, callback) {
if (!(type in this.listeners)) {
this.listeners[type] = []
}
this.listeners[type].push(callback)
}
remove (type, callback) {
if (!(type in this.listeners)) {
return
}
const stack = this.listeners[type]
for (let i = 0, l = stack.length; i < l; i++) {
if (stack[i] === callback) {
stack.splice(i, 1)
return this.remove(type, callback)
}
}
}
dispatch (event, breakOff = false) {
if (!(event.type in this.listeners)) {
return
}
const stack = this.listeners[event.type]
event.target = this
if (breakOff) {
stack.some((fun, idx) => {
const result = fun.call(this, event)
if (result) stack.unshift(...stack.splice(idx, 1))
return result
})
} else {
stack.forEach(fun => fun.call(this, event))
}
}
}
|