Add legacy Electron app
build-winui / winui (push) Has been cancelled

This commit is contained in:
QWQLwToo
2026-06-26 13:29:02 +08:00
parent 079ee4eaeb
commit 46a3674381
115 changed files with 55280 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
// src/js/core/EventBus.js
/**
* 事件总线
* 统一管理应用内的事件通信
*/
class EventBus {
constructor() {
this.events = new Map();
this.onceEvents = new Map();
}
/**
* 订阅事件
* @param {string} event - 事件名称
* @param {Function} callback - 回调函数
* @returns {Function} 取消订阅函数
*/
on(event, callback) {
if (!this.events.has(event)) {
this.events.set(event, []);
}
this.events.get(event).push(callback);
// 返回取消订阅函数
return () => {
this.off(event, callback);
};
}
/**
* 订阅事件(仅触发一次)
* @param {string} event - 事件名称
* @param {Function} callback - 回调函数
*/
once(event, callback) {
if (!this.onceEvents.has(event)) {
this.onceEvents.set(event, []);
}
this.onceEvents.get(event).push(callback);
}
/**
* 取消订阅事件
* @param {string} event - 事件名称
* @param {Function} callback - 回调函数(可选)
*/
off(event, callback) {
if (callback) {
const callbacks = this.events.get(event);
if (callbacks) {
const index = callbacks.indexOf(callback);
if (index > -1) {
callbacks.splice(index, 1);
}
}
} else {
this.events.delete(event);
}
}
/**
* 触发事件
* @param {string} event - 事件名称
* @param {...any} args - 事件参数
*/
emit(event, ...args) {
// 触发普通订阅
const callbacks = this.events.get(event);
if (callbacks) {
callbacks.forEach(callback => {
try {
callback(...args);
} catch (error) {
console.error(`事件 ${event} 的回调执行失败:`, error);
}
});
}
// 触发一次性订阅
const onceCallbacks = this.onceEvents.get(event);
if (onceCallbacks) {
onceCallbacks.forEach(callback => {
try {
callback(...args);
} catch (error) {
console.error(`事件 ${event} 的一次性回调执行失败:`, error);
}
});
this.onceEvents.delete(event);
}
}
/**
* 清除所有事件监听
*/
clear() {
this.events.clear();
this.onceEvents.clear();
}
}
export default new EventBus();