___ answer2579795 ___
%Vor%
Verwenden Sie date = new Date();
als Timeout-Zeit. Zugegeben, mit secondsLeft = 60 - date.getSeconds();
können Sie Millisekunden angeben, was bedeutet, dass Sie auch Millisekunden überprüfen sollten, aber dies wird Ihnen "nahe genug" für die meisten Anwendungen geben. Wenn überhaupt, sollte dies dazu führen, dass Sie in einem Bruchteil einer Sekunde über die Minute hinausschießen, aber es ist besser zu überschwingen als zu unterschwingen. Unterschreitung würde bei dieser Methode zu einem katastrophalen Fehler führen.
___ answer2579805 ___
%Vor%
Offensichtlich ist das nicht 100% genau, aber in den meisten Fällen sollte es ausreichen.
___ qstntxt ___
An die Javascript-Enthusiasten,
Wie würden Sie einen secondsLeft
(oder %code% ) Handle programmieren, um minutengenau auf die Minute zu feuern? Wenn es zum Beispiel die 51 Sekunden der aktuellen Zeit ist, dann feuere es in 9 Sekunden, wenn es die 14. Sekunde ist, feuere es dann in 46 Sekunden ab
Danke
___ qstnhdr ___ setInterval Von Minute zu Minute
___ answer14644729 ___
Zuerst habe ich die von Joel Potter vorgeschlagene Lösung verwendet. Seine Lösung ist in den meisten Fällen gut genug. Da das JavaScript jedoch immer nur eine Sache ausführt (es sei denn, Sie verwenden Workers), kann es sein, dass es mit dem ersten Timeout zu spät kommt, so dass Ihr erstes Timeout ausgeführt wird, z. 5 Sekunden zu spät und Sie erhalten Intervall alle 5 Sekunden nach der Minute.
Also, hier ist meine Implementierung:
%Vor%
___ answer2579884 ___
%Vor%
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script).
___ antwort43323802 ___
Obwohl es zu spät für die Antwort war, hatte ich in letzter Zeit ähnliche Probleme zu lösen und dachte daran, meinen Ansatz zu teilen. Mein Problem war es, eine Zeitüberschreitung nach einer bestimmten Sekunde auszuführen, abhängig davon, wie weit es von einer Minute entfernt ist, und anschließend jede Minute eine Intervallfunktion auszuführen. Hier ist was ich getan habe.
Nehmen wir an, das Datum ist ein JavaScript-Datumsobjekt, das mit %code%
erstellt wurde
- Erhalten Sie die Sekunden, um eine Minute zu erreichen %code%
-
Setzen Sie anschließend eine Zeitüberschreitungsfunktion, die nach %code% ausgeführt wird, und setzen Sie innerhalb der Funktion eine Intervallfunktion, um jede Minute wie folgt auszuführen:
%Vor%
- Mit dem obigen Format / Algorithmus können Sie ähnliche Probleme mit den Sekunden in jedem Format erreichen. Die Idee ist, die Differenz von Sekunden und 60 zu erhalten, eine Zeitüberschreitung nach diesen Sekunden auszuführen, und innerhalb der Timeout-Funktion Laufintervall-Funktion mit Intervall als eine Minute / oder irgendetwas als solches basierend auf der Anforderung.
___ answer46955260 ___
Zuerst sollten wir sicherstellen, dass wir wissen, wie viel Zeit wir bis zur nächsten Minute haben:
%Vor%
Wenn Sie jetzt mit %code% arbeiten wollen, dann
%Vor%
Wenn du %code% machen willst:
%Vor%
___ answer2579823 ___
%Vor%
___ tag123settimeout ___ setTimeout ist eine globale JavaScript-Methode, mit der eine bestimmte Funktion oder ein Code nach einer bestimmten Verzögerung ausgeführt wird.
___ answer2579845 ___
%Vor%
___