Escrito el 01/08/2024

Cómo hacer Subscribe y Unsubscribe

Cuando se llama al método subscribe, normalmente nos devuelve una función para unsubscribe para hacerlo hay que implementarlo así:

export class SubscribleObject {
  private subscriptions: Function[] = [];

  public subscribe(fn: Function): Function {
    this.subscriptions = [...this.subscriptions, fn]; // agregar la subscripción
    this.notify(); // notificar los datos actuales
    return () => {
      this.subscriptions = this.subscriptions.filter((sub) => sub !== fn);
    }; // función para desuscribirse
  }

  private notify() {
    const data = this.internalData(); // función que devuelve los datos a los que se subscribieron
    this.subscriptions.forEach((fn) => fn(data)); // notifica a todos los subscriptores
  }
}

Al menos es una manera de hacerlo.