- 定义一个事件对象,用来保存事件和回调函数
let eventObj = {
events: {
// eventName: [fn1, fn2`]`
}
}
- 提供订阅接口,往事件对象中添加回调函数
function subscribe(eventName, fn) {
eventObj.events[eventName] = eventObj.events[eventName] || [];
eventObj.events[eventName].push(fn);
}
- 提供发布接口,执行事件对象中存储的回调函数
function publish(eventName, data) {
if(eventObj.events[eventName]) {
eventObj.events[eventName].forEach(fn => fn(data));
}
}
- 使用方式
// 订阅
subscribe('event1', fn1);
subscribe('event1', fn2);
// 发布
publish('event1', 'hello');