Как в Angular используются RxJS и Observable?
- Чем Observable отличается от Promise?
- Что делает switchMap?
Observable — поток значений во времени (может выдать много значений, ленив до подписки, отменяется отпиской), в отличие от Promise с одним значением. HttpClient, события форм и роутера в Angular — Observable. Операторы строят обработку: map, filter, debounceTime, distinctUntilChanged, switchMap (отменить предыдущий запрос при новом значении — поиск), catchError. Подписки обязательно закрывать: async pipe в шаблоне, takeUntilDestroyed — иначе утечки. Для состояния компонентов всё чаще используют сигналы, а RxJS — для асинхронных потоков.
- switchMap — поиск, mergeMap — параллельно, concatMap — по очереди
- toSignal и toObservable связывают сигналы и RxJS
- Подписка внутри подписки — антипаттерн, нужен оператор
Подробно
results$ = this.query.valueChanges.pipe(
debounceTime(300), distinctUntilChanged(),
switchMap(q => this.api.search(q)),
);Что хотят услышать
- Отличие Observable от Promise.
- Основные операторы, switchMap.
- Отписка и утечки.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Observable выдаёт ровно одно значение, как Promise, и запускается сразу при создании
- ✗switchMap выполняет все запросы параллельно и не отменяет старые, а лишь упорядочивает их ответы
- ✓Ленивый отменяемый поток; цепочки операторов, отписка через async pipe или takeUntilDestroyed
- ✗Отписываться от Observable не нужно: Angular закрывает все подписки сам
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.