Angular · Senior · Frage 11 von 75
Wie räumt man in einem effect auf, bevor er erneut läuft oder zerstört wird?
effect((onCleanup) => {
const id = setInterval(() => this.poll(this.url()), 5000);
onCleanup(() => clearInterval(id));
});- 1Die Aufräumfunktion nur aus
ngOnDestroyzurückgeben - 2Mit dem
onCleanup-Callback registrieren, den der Effect bekommt - 3Gar nicht: Effects räumen alle Timer automatisch auf
Antwort zeigen
Richtige Antwort: Mit dem onCleanup-Callback registrieren, den der Effect bekommt
Erklärung
Das Aufräumen läuft vor der nächsten Ausführung (wenn sich url ändert) und wenn der Effect mit seinem Injection Context zerstört wird, und verhindert doppelte Intervalle.