UNPKG

yuxuannnn_utils

Version:
62 lines (61 loc) 2.18 kB
"use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _EventBus_eventMap; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventBus = void 0; /** * 发布订阅模式 : 事件总线 */ class EventBus { constructor() { _EventBus_eventMap.set(this, new Map()); } /** * 监听事件 */ $on(eventType, handle) { const _eventSet = __classPrivateFieldGet(this, _EventBus_eventMap, "f").get(eventType); if (_eventSet) { _eventSet.add(handle); } else { const newEventSet = new Set(); newEventSet.add(handle); __classPrivateFieldGet(this, _EventBus_eventMap, "f").set(eventType, newEventSet); } } $emit(eventType, ...args) { const _eventSet = __classPrivateFieldGet(this, _EventBus_eventMap, "f").get(eventType); if (_eventSet) { for (const event of _eventSet) { event.apply(this, args); if (event.__once__) { _eventSet.delete(event); } } } } $once(eventType, handle) { handle.__once__ = true; // 事件仅触发一次 this.$on(eventType, handle); } $off(eventType, handle) { const _eventSet = __classPrivateFieldGet(this, _EventBus_eventMap, "f").get(eventType); if (!_eventSet) { return; } if (!handle) { // 销毁eventType的所有事件 _eventSet.clear(); } else { _eventSet.delete(handle); } } } exports.EventBus = EventBus; _EventBus_eventMap = new WeakMap();