Angular · Senior · Pytanie 11 z 75
Jak posprzątać wewnątrz effect przed jego ponownym uruchomieniem lub zniszczeniem?
effect((onCleanup) => {
const id = setInterval(() => this.poll(this.url()), 5000);
onCleanup(() => clearInterval(id));
});- ✓Poprawna odpowiedź: Zarejestrować sprzątanie przez callback
onCleanup, który otrzymuje efekt - 2Zwrócić funkcję sprzątającą tylko z
ngOnDestroy - 3Efekty same czyszczą wszystkie timery
Wyjaśnienie
Sprzątanie wykonuje się przed kolejnym uruchomieniem (gdy zmienia się url) i przy zniszczeniu efektu razem z kontekstem wstrzykiwania, co zapobiega duplikowaniu interwałów.