Angular · Senior · Запитання 49 з 75
Чому вкладені виклики subscribe вважаються антипатерном?
this.route.paramMap.subscribe((p) => {
this.api.load(p.get("id")!).subscribe((data) => (this.data = data));
});- ✓Правильна відповідь: Внутрішні підписки не скасовуються й не очищаються - гонки й витоки; використовуйте оператор розгортання
- 2RxJS забороняє підписуватися всередині колбеків
- 3Це робить запит синхронним
Пояснення
paramMap.pipe(switchMap((p) => this.api.load(p.get('id')!))) скасовує застарілі запити за зміни параметра й лишає одну підписку (або жодної - з async/toSignal).