e-virt-table
Version:
A powerful data table based on canvas. You can use it as data grid、Microsoft Excel or Google sheets. It supports virtual scroll、cell edit etc.
58 lines • 1.56 kB
JavaScript
class EventBus {
constructor() {
Object.defineProperty(this, "events", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
}
has(event) {
return this.events.has(event);
}
// 订阅事件
on(event, callback) {
const callbacks = this.events.get(event) || [];
callbacks.push(callback);
this.events.set(event, callbacks);
}
// 一次性订阅事件
once(event, callback) {
const onceCallback = (...args) => {
callback(...args);
this.off(event, onceCallback);
};
this.on(event, onceCallback);
return this;
}
// 取消订阅事件
off(event, callback) {
const callbacks = this.events.get(event);
if (callbacks) {
const index = callbacks.indexOf(callback);
if (index >= 0) {
callbacks.splice(index, 1);
if (callbacks.length === 0) {
this.events.delete(event);
}
else {
this.events.set(event, callbacks);
}
}
}
}
// 发布事件
emit(event, ...args) {
const callbacks = this.events.get(event);
if (callbacks) {
callbacks.forEach((callback) => {
callback(...args);
});
}
}
destroy() {
this.events.clear();
}
}
export default EventBus;
//# sourceMappingURL=EventBus.js.map