Как подготовить Angular-список репозиториев к merge?

Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.

Короткий ответ

Что ответить на собеседовании

Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.

Подробный разбор

Ответ с пояснениями

Условие

Компонент Angular вручную подписывается на HTTP-загрузку по изменению поисковой строки, не отменяет прошлые запросы и не завершает подписку. В шаблоне нет loading/error, строки определяются по индексу. Какие изменения нужны?

Ответ

Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.

AsyncPipe в шаблоне управляет подпиской на observable; для ручной подписки можно использовать takeUntilDestroyed в корректном injection context или с DestroyRef. SwitchMap отсоединяет прошлый inner-поток при новом поиске. CatchError лучше расположить так, чтобы ошибка одного запроса не прекращала весь поток ввода. Перед merge проверяют пустой результат, быстрый ввод, ошибку сети и уход со страницы, не вызывая реальные внешние сервисы в автоматических проверках.

Источник: angular.dev, angular.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее