js写一下发布订阅者模式
时间: 2023-02-18 09:19:22 浏览: 102
发布-订阅者模式(也称为观察者模式)是一种软件设计模式,它允许对象订阅特定的事件并在该事件发生时执行代码。
下面是使用 JavaScript 实现发布-订阅者模式的一个简单示例:
```
class EventEmitter {
constructor() {
this.subscribers = {};
}
subscribe(eventName, callback) {
if (!this.subscribers[eventName]) {
this.subscribers[eventName] = [];
}
this.subscribers[eventName].push(callback);
}
unsubscribe(eventName, callback) {
if (this.subscribers[eventName]) {
this.subscribers[eventName] = this.subscribers[eventName].filter(
(subscriber) => subscriber !== callback
);
}
}
emit(eventName, data) {
if (this.subscribers[eventName]) {
this.subscribers[eventName].forEach((subscriber) =>
subscriber(data)
);
}
}
}
const eventEmitter = new EventEmitter();
const subscriber1 = (data) => console.log(`Received data: ${data}`);
const subscriber2 = (data) => console.log(`Received data: ${data}`);
eventEmitter.subscribe("event1", subscriber1);
eventEmitter.subscribe("event1", subscriber2);
eventEmitter.emit("event1", "Hello World!");
// Output: "Received data: Hello World!"
// Output: "Received data: Hello World!"
eventEmitter.unsubscribe("event1", subscriber1);
eventEmitter.emit("event1", "Hello World!");
// Output: "Received data: Hello World!"
```
在上面的代码中,我们定义了一个 `EventEmitter` 类,它具有订阅、取消订阅和发布事件的方法。我们可以使用 `subscribe` 方法订阅特定的事件,使用 `unsubscribe` 方法取消订阅,并使用 `emit` 方法发布事件。在发布事件时,所有已订阅该事件的回调函数都会