使用 JS 实现一个发布订阅模式
实现一个 Event ,示例如下:const e = new Event();e.on("click", x => console.log(x.id));e.emit("click", { id: 3 }); // 3e.emit("click", { id: 4 }); // 4一个简单的发布订阅模式实现如下,主要有两个核心 APIemit 发布一个事件on 监听一个事件class Eve
·
实现一个 Event
,示例如下:
const e = new Event();
e.on("click", x => console.log(x.id));
e.emit("click", { id: 3 }); // 3
e.emit("click", { id: 4 }); // 4
一个简单的发布订阅模式实现如下,主要有两个核心 API
emit
发布一个事件on
监听一个事件
class Event {
// Events<String, Function[]>
events = {};
emit(type, ...args) {
// 发布事件
// 可以传递多个参数,每个事件处理函数都会被执行一次
const listeners = this.events[type];
for (const listener of listeners) {
listener(...args);
}
}
on(type, listener) {
// 注册事件
// 一个事件可以绑定多个事件处理函数
this.events[type] = this.events[type] || [];
this.events[type].push(listener);
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)