Встречается на собеседованиях • сегодня

Как при помощи принципа разделения команды и запроса получить данные в двух компонентах из одного запроса

Используя паттерн Command Query Separation (CQS), можно разделить логику получения данных и их использования. Для этого создадим сервис, который будет выполнять запрос и хранить данные, доступные для подписки: ```ts // data.service.ts @Injectable({ providedIn: 'root' }) export class DataService { private dataSubject = new BehaviorSubject(null); data$ = this.dataSubject.asObservable(); loadData(): Observable { return this.http.get('/api/data').pipe( tap(data => this.dataSubject.next(data)) ); } } ``` Компоненты могут использовать этот сервис: ```ts // component1.ts export class Component1 { data$ = this.dataService.data$; constructor(private dataService: DataService) { this.dataService.loadData().subscribe(); } } // component2.ts export class Component2 { data$ = this.dataService.data$; constructor(private dataService: DataService) {} } ``` Таким образом: 1. Команда `loadData()` выполняет запрос 2. Запрос `data$` предоставляет данные 3. Оба компонента получают одни и те же данные без дублирования запросов
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы