Vorwort Lösche den Timer. Ich glaube, viele Leute schreiben das so: Standard exportieren { Daten() { zurückgeben Timer: null } }, montiert() { dieser.timer = setzeInterval(() => { console.log('Intervall festlegen') }, 2000) }, vorZerstören() { Intervall löschen(dieser.Timer) } } Dies ist ein gängiger Codeabschnitt. Zumindest einige meiner Freunde (mit 1-3 Jahren Erfahrung) schreiben ihn so. Hier gibt es drei unelegante Probleme:
Optimierung Direkt zum Code: Standard exportieren { Daten() { zurückgeben } }, montiert() { let timer = setzeInterval(() => { console.log('Intervall festlegen') }, 2000) dies.$once('hook:beforeDestroy', () => { Intervall löschen(Timer) Timer = null }) } } Hier wird ein Hook verwendet, um den Lebenszyklus von beforeDestroy zu überwachen, sodass der Timer nur im Lebenszyklus definiert werden muss und alle oben genannten Probleme gelöst sind. Ableitungsfrage: Wird beforeDestroy nicht ausgelöst? Im Backend-System richten wir häufig Seitencaches ein. Wenn die Route durch Keep-Alive zwischengespeichert wird, wird der Lebenszyklus von beforeDestroy nicht eingehalten. Daher denken manche Leute, dass es ausreicht, den Timer in beforeDestroy zu löschen, und überprüfen nicht einmal, ob der Timer tatsächlich gelöscht wurde. Die Ursache lässt sich mithilfe aktivierter und deaktivierter Hooks leicht ermitteln: Standard exportieren { Daten() { zurückgeben } }, montiert() { let timer = setzeInterval(() => { console.log('Intervall festlegen') }, 2000) dies.$on('hook:activated', () => { if (timer === null) { // Wiederholte Timer-Aktivierung vermeiden timer = setInterval(() => { console.log('Intervall festlegen') }, 2000) } }) dies.$on('hook:deaktiviert', () => { Intervall löschen(Timer) Timer = null }) } } Hierbei ist zu beachten, dass aus Caching-Gründen eher $on als $once verwendet werden sollte, da es sonst nach einmaliger Ausführung nicht erneut ausgelöst wird. Dies ist das Ende dieses Artikels zum eleganten Löschen des Timers in Vue. Weitere relevante Inhalte zum Löschen des Timers in Vue finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Überwachen Sie Änderungen im MySQL-Tabelleninhalt und aktivieren Sie das MySQL-Binärprotokoll
Im Vue-Gerüst können wir sehen, dass im neuen Vue...
Um uns auf dem Server schnell bei der Datenbank a...
Verwenden Sie CSS, um den Stil der Bildlaufleiste...
IIS7 muss bestätigen, ob das pseudostatische Modu...
Bei der Arbeit an einem Projekt bin ich kürzlich ...
Wie wir alle wissen, ist SSH derzeit das zuverläs...
Ich habe vor kurzem ein kleines Programmierprojek...
Problem beim Gucken Angenommen, der IIS-Dienst st...
1. Überprüfen Sie die PHP-Version nach dem Aufruf...
Wichtige Modifikatoren Wenn wir auf Tastaturereig...
Inhaltsverzeichnis 1. Das Konzept der Schließung ...
Vorwort: Ich lerne derzeit Linux und .Net Core un...
Inhaltsverzeichnis 1. Projektintegration 1. CDN-I...
Die stabile Version (GA) von MySQL 8.0.18 wurde g...
Vorwort Aus beruflichen Gründen musste ich kürzli...