0

For example, I:

  1. Created a class with private Subject and WeakMaps to add Subject and Subscription
    const subjectsMap = new WeakMap();
    const subscriptionsMap = new WeakMap();
    
    class Test {
      #privateSubject = new BehaviorSubject(false);
      
      constructor() {
        subscriptionsMap.set(this.#privateSubject.subscribe(console.log), true);
        subjectsMap.set(this.#privateSubject, true);
      }
    }
  1. Created a new Test instance
let test = new Test()
  1. Checked my Weakmaps
console.log(subjectsMap)
> WeakMap {BehaviorSubject => true}

console.log(subscriptionsMap)
> WeakMap {SafeSubscriber => true}
  1. Deleted the reference to my Test instance
test = null
  1. Checked my WeakMaps and voila
console.log(subjectsMap)
> WeakMap {}

console.log(subscriptionsMap)
> WeakMap {}

My Subject and Subscription are destroyed. So why do I need to unsubscribe from them in the component?

Riscie
  • 3,775
  • 1
  • 24
  • 31
  • Try with an observable source that continues to emit values after the component is destroyed: `#privateSubject = timer(0, 1000).pipe(tap(i => console.log('val ', i)));` – BizzyBob Sep 19 '22 at 13:22

0 Answers0