RxJs - способы отписаться

Reading time ~1 minute

Императивный способ отписки

export class AwesomeComponent implements OnInit, OnDestroy {
  private readonly service = inject(TodoService);
  private subscription!: Subscription;

  public todos: Todo[] = [];

  ngOnInit(): void {
    this.subscription = toObservable(this.service.todos).subscribe(
      (todos) => (this.todos = todos)
    );
  }

  ngOnDestroy(): void {
    this.subscription?.unsubscribe();
  }
}

Декларативный способ отписки

export class AwesomeAnotherComponent {
  private readonly service = inject(TodoService);
  private destroy$ = new Subject<void>();

  public todos: Todo[] = [];

  ngOnInit(): void {
    toObservable(this.service.todos)
      .pipe(takeUntil(this.destroy$))
      .subscribe((todos) => (this.todos = todos));
  }

  ngOnDestroy(): void {
    this.destroy$.next();
    this.destroy$.complete();
  }
}

async

Тут особо говорить нечего - и так все понятно.

Оператор takeUntilDestroyed

takeUntilDestroyed - более новый споосб отписки в RxJs. Материалы по теме:

Что такое os.File

Файл — это не просто значок на рабочем столе. Это структурированный набор данных, который хранится на диске и управляется операционной си...… Continue reading