JSFiddle - React, Tailwind, and code Playground

by amindunited

JavaScript

/** SOF 
 * The Singnal Class
 *
 */
class Signal {
  constructor() {
    this.listeners = [];
  }

  add(listener) {
    this.listeners.push(listener);
  }

  remove(listener) {
    this.listeners = this.listeners.filter((l) => l !== listener);
  }

  dispatch(data) {
    this.listeners.forEach((listener) => {
      listener(data);
    });
  }
}

// module.exports = Signal;
/** EOF 
 * The Singnal Class
 *
 */
 
 /*
  *
  */

/* const Signal = require('./Signal'); */

// Create signals
const mySignal = new Signal();

// Subscribe to the signal
const listener1 = (data) => {
  console.log('Listener 1:', data);
};

mySignal.add(listener1);

// Dispatch an event
mySignal.dispatch('Hello, world!');

// Unsubscribe from the signal
mySignal.remove(listener1);

// Dispatch again
mySignal.dispatch('This should not be logged.');