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.