release
This commit is contained in:
+15
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user