commit b8acd0a3e4515593bad445426f86b9e35ee6a59d Author: sealday Date: Wed Jul 3 15:21:51 2024 +0800 添加 pubsub.ts diff --git a/pubsub.ts b/pubsub.ts new file mode 100644 index 0000000..ef57309 --- /dev/null +++ b/pubsub.ts @@ -0,0 +1,30 @@ +interface PubSub { + subscribe(event: string, listener: (data: any) => void): void; + unsubscribe(event: string, listener: (data: any) => void): void; + publish(event: string, data: any): void; +} + +// 创建 PubSub 实例 +const pubSub = new SimplePubSub(); + +// 定义订阅者 +const subscriber1 = (data: any) => { + console.log(`Subscriber 1 received: ${data}`); +}; + +const subscriber2 = (data: any) => { + console.log(`Subscriber 2 received: ${data}`); +}; + +// 订阅事件 +pubSub.subscribe('event1', subscriber1); +pubSub.subscribe('event1', subscriber2); + +// 发布事件 +pubSub.publish('event1', 'Hello, World!'); + +// 取消订阅 +pubSub.unsubscribe('event1', subscriber1); + +// 发布事件 +pubSub.publish('event1', 'Hello again!'); \ No newline at end of file