手写发布订阅原创
# 手写发布订阅
class observer{
constructor(){
this.cache = {};
}
on(eventName,callback){
let calls = this.cache[eventName]||[];
calls = [...calls,callback];
this.cache[eventName] = calls;
}
emit(eventName,argus){
let calls = this.cache[eventName];
calls.forEach((item,index)=>{
item.call(this,[...argus]);
})
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18