Question 85
Question
Answer
class PubSub {
constructor() {
this.events = {};
}
// Subscribe to an event
subscribe(eventName, callback) {
if (!this.events[eventName]) {
this.events[eventName] = []; // Create a new list for this event if it doesn't exist
}
this.events[eventName].push(callback);
}
// Publish an event (trigger notifications)
publish(eventName, data) {
if (this.events[eventName]) {
const subscribers = this.events[eventName]; // Get the list of subscribers for this event
subscribers.forEach(callback => callback(data)); // Call each subscriber's function with the provided data
}
}
}
// Usage Example:
const pubSub = new PubSub();
// Subscriber 1
pubSub.subscribe('message', (msg) => {
console.log("Subscriber 1 received:", msg);
});
// Subscriber 2
pubSub.subscribe('message', (msg) => {
console.log("Subscriber 2 received:", msg);
});
// Publisher
pubSub.publish('message', 'Hello from the publisher!');
Last updated