| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.EventBus = void 0;
- const events_1 = require("@dage/events");
- class EventBus {
- constructor() {
- this.emitter = new events_1.EventEmitter();
- this.bufferMap = new Map();
- }
- getBufferValue(event) {
- return this.bufferMap.get(event);
- }
- setBufferValue(event, val) {
- this.bufferMap.set(event, val);
- }
- /**
- * 监听事件
- */
- on(event, callback) {
- const bufferValue = this.getBufferValue(event);
- if (bufferValue) {
- callback(bufferValue);
- }
- this.emitter.on(event, callback);
- return () => {
- this.emitter.off(event, callback);
- };
- }
- /**
- * 监听一次事件
- */
- once(event, callback) {
- const bufferValue = this.getBufferValue(event);
- if (bufferValue) {
- callback(bufferValue);
- return () => { };
- }
- this.emitter.once(event, callback);
- return () => {
- this.emitter.off(event, callback);
- };
- }
- /**
- * 触发事件
- * @param event
- * @param arg
- * @param replay - 是否重放该值
- */
- emit(event, arg, replay = false) {
- if (replay) {
- this.setBufferValue(event, arg);
- }
- this.emitter.emit(event, arg);
- }
- /**
- * 需要最新值的时候 可以调用此方法重置
- */
- resetReplayValue(event) {
- this.bufferMap.delete(event);
- }
- /**
- * 监听新的订阅者
- */
- onSubscriber(event, callback) {
- const listener = (name, subscriber) => {
- if (name === event) {
- callback(subscriber);
- }
- };
- this.emitter.on("newListener", listener);
- return () => {
- this.emitter.off("newListener", listener);
- };
- }
- }
- exports.EventBus = EventBus;
|