Meta Initial Frontend/UI Screen

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);