This commit is contained in:
2026-06-24 11:02:42 +08:00
parent c59c1b9fc4
commit ee8fc60eae
7 changed files with 105 additions and 16 deletions
+15 -1
View File
@@ -11,13 +11,27 @@ EventPrintLog = "print_log" # 打印日志
class EventBus:
def __init__(self):
self.listeners = {} # 管理各种event的订阅情况
self.last_events = {} # 存储每个事件的最后一次值,用于"重播"给新订阅者
def subscribe(self, event_type, listener):
def subscribe(self, event_type, listener, replay=True):
"""订阅事件
Args:
event_type: 事件类型
listener: 回调函数
replay: 是否自动重播最近一次事件状态(默认True)
"""
if event_type not in self.listeners:
self.listeners[event_type] = []
self.listeners[event_type].append(listener)
# 新订阅者自动收到最近一次事件状态(如果存在)
if replay and event_type in self.last_events:
listener(self.last_events[event_type])
def publish(self, event_type, data):
# 存储最后一次事件值
self.last_events[event_type] = data
if event_type in self.listeners:
for listener in self.listeners[event_type]:
listener(data)