Meta Frontend/UI Initial Screen
Meta - Frontend Eng - Initial Screen
Description Template:
Level: E4
Years of Experience: ~10
It was an exercise make a subscription/publication class. It was originally just subscribe/publish. Then we needed to add unsubscribe which complicated things.
This is not my exact code. But gets across the general idea for a solution.
class PubSub {
constructor() {
this.subscribers = {};
}
subscribe(event, callback) {
if (!this.subscribers[event]) {
this.subscribers[event] = new Set();
}
this.subscribers[event].add(callback);
}
unsubscribe(event, callback) {
if (!this.subscribers[event]) return;
this.subscribers[event].delete(callback);
}
publish(event, data) {
if (!this.subscribers[event]) return;
this.subscribers[event].forEach(callback => callback(data));
}
}
// Usage:
const handler = (data) => console.log(data);
pubsub.subscribe('message', handler);
pubsub.unsubscribe('message', handler);