advanced

RxJS

Моделируйте async-потоки через observables, operators, subscriptions, отмену, multicasting и async pipe в шаблонах.

RxJS моделирует async как Observables — ленивые потоки с operators (`map`, `switchMap`, `debounceTime`, `catchError`). HttpClient возвращает Observables; в шаблонах `async` pipe подписывается и отписывается автоматически.

					users$ = this.route.paramMap.pipe(
  switchMap((params) => this.api.getUser(params.get('id')!)),
);
				

`switchMap` отменяет предыдущие inner subscriptions — типично для поиска. `shareReplay` мультикастит hot streams. Без async pipe — teardown (`takeUntilDestroyed`).

На интервью: Observable vs Promise, cold vs hot, утечки от забытых подписок, обработка ошибок в потоках.

Типовые ошибки: вложенные subscribe, нет unsubscribe, `subscribe` в services вместо cold Observable.

Компромисс: выразительные stream pipelines против дисциплины lifecycle подписок.

Чеклист:

  • async pipe в шаблонах в приоритете.
  • switchMap для HTTP от params.
  • Один error handler на цепочку.
  • takeUntilDestroyed для ручных subs.