class EE {
events = {};
//触发订阅的方法
emit(name, ...params) {
(this.events[name] || []).forEach(it => {
it(...params);
});
return this;
}
//绑定订阅只执行一次就销毁
once(name, func) {
const wraper = (...arg) => {
func(...arg);
this.off(name, wraper);
};
this.on(name, wraper);
}
//绑定订阅
on(name, func) {
const callbacks = this.events[name] || [];
callbacks.push(func);
this.events[name] = callbacks;
return this;
}
//取消订阅
off(name, func) {
(this.events[name] || []).filter(it => it !== func);
return this;
}
}
//Event 实现
发布订阅模式
最新推荐文章于 2024-07-23 12:35:43 发布