Wie lassen Sie JavaScript zu warten, bis ein bestimmtes Ereignis passiert?
Schreibe ich eine Webseite mit der folgenden Struktur:
- Einem Abschnitt (Tabelle A) hängt von einem anderen Abschnitt (Tabelle B);
- Ein weiterer Abschnitt (Tabelle B) Elemente, die erfordern, dass die Neuberechnung auf jedes update. Die Berechnung erfolgt durch externe tools, und zu bewirken, dass ein Ereignis, wenn Sie fertig sind.
Um Gewähr für die Richtigkeit, die Tabelle, die aktualisiert werden müssen, nur nach der anderen Tabelle ist vollständig aktualisiert (D. H., mit Berechnung). Allerdings, ich weiß nicht, wie Sie effektiv erreichen, und ich konnte nicht finden alle wait
- Funktion in JavaScript.
Jetzt bin ich mit folgender Methode:
- Deklarieren Sie eine Globale variable
updated
und machen esfalse
; - Nach der ersten Tabelle erhalten input, ich mache eine leere
while
Schleife bisupdated
isttrue
; - Fügen Sie einen listener, sobald die Berechnung abgeschlossen ist und das Ereignis erhalten, setzen Sie
updated
zutrue
.
Scheint dies unintuitiv für mich, aber ich kann mir nicht vorstellen, dass es eine andere Art es zu tun. Gibt es gute Möglichkeiten, dies zu tun?
Vielen Dank für alle inputs!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt
updated
auf true, und dann wartenupdated
um wahr zu sein - nur tun, was Sie wollen in den Hörer.Tun, leeren while-Schleifen ist eine schlechte Idee. Nicht nur, dass Sie brennen, CPU-Zyklen, aber Javacript ist single-threaded, so dass Sie wird die Schleife für immer, ohne dass irgendjemand eine chance, um die variable ändern.
Was Sie tun können, ist schreiben die Tabelle, das anderen Menschen abhängig, um "Feuer-ein Erlebnis für sich". Es gibt viele Möglichkeiten, dies zu tun, aber im Grunde genommen wollen Sie nur, es zu rufen, eine "Fortsetzung" - Funktion statt blindily Rückkehr. Diese Funktion kann voreingestellt werden oder Sie können übergeben Sie es als parameter irgendwo.
Könnten Sie schreiben, eine callback-Funktion für das, was löst das update. Um zu vermeiden, chaotisch Rückrufe, könnten Sie verspricht auch, und aktualisieren Teile der Tabelle abhängig von den abgerufenen Daten im update-Vorgang. Offen für Vorschläge.