interviews/pub.js

43 lines
820 B
JavaScript
Raw Permalink Normal View History

2024-07-08 16:19:37 +08:00
class SimplePubSub {
subscribe(event, listener) {
}
unsubscribe(event, listener) {
}
publish(event, data) {
}
}
// 创建 PubSub 实例
const pubSub = new SimplePubSub();
// 定义订阅者
const subscriber1 = (data) => {
console.log(`Subscriber 1 received: ${data}`);
};
const subscriber2 = (data) => {
console.log(`Subscriber 2 received: ${data}`);
};
// 订阅事件
pubSub.subscribe('event1', subscriber1);
pubSub.subscribe('event1', subscriber2);
// 发布事件
pubSub.publish('event1', 'Hello, World!');
// 取消订阅
pubSub.unsubscribe('event1', subscriber1);
// 发布事件
2024-07-08 16:38:20 +08:00
pubSub.publish('event1', 'Hello again!');
// 输出应该是如下的样式
/*
Subscriber 1 received: Hello, World!
Subscriber 2 received: Hello, World!
Subscriber 2 received: Hello again!
*/