创建一个 event bus
基于事件发布订阅的 event bus. 该方式区别于传统的 event bus 可以监听多个事件,该方式是点对点事件监听的。 比传统的 EventBus 解决了类型安全以及隐式依赖的问题。 其实更好的方式是用 RxJS 的各种 Subject 作为 EventBus,但是仅仅只是用于 EventBus 的话有点杀鸡焉用牛刀,所以该方式可以作为下位替代。
触发事件,传递数据
添加事件监听,接收数据
清理所有事件监听
// 创建事件,预先声明事件const event = createEventBus<{ a: number; b: number }>();// 事件监听const off = event.on((v, off) => { console.log(v.a, v.b); off(); // 移除事件监听,相当于一次性事件;跟外面 on 返回的 off 是一样的});// 触发事件event.emit({ a: 1, b: 2 });// 清理事件监听off();// 清理所有事件监听event.clear(); 复制
// 创建事件,预先声明事件const event = createEventBus<{ a: number; b: number }>();// 事件监听const off = event.on((v, off) => { console.log(v.a, v.b); off(); // 移除事件监听,相当于一次性事件;跟外面 on 返回的 off 是一样的});// 触发事件event.emit({ a: 1, b: 2 });// 清理事件监听off();// 清理所有事件监听event.clear();
创建一个 event bus
基于事件发布订阅的 event bus. 该方式区别于传统的 event bus 可以监听多个事件,该方式是点对点事件监听的。 比传统的 EventBus 解决了类型安全以及隐式依赖的问题。 其实更好的方式是用 RxJS 的各种 Subject 作为 EventBus,但是仅仅只是用于 EventBus 的话有点杀鸡焉用牛刀,所以该方式可以作为下位替代。