setInterval Von Minute zu Minute

8

An die Javascript-Enthusiasten,

Wie würden Sie einen setTimeOut (oder setInterval ) 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

    
bushman 05.04.2010, 17:14
quelle

8 Antworten

14
%Vor%

Offensichtlich ist das nicht 100% genau, aber in den meisten Fällen sollte es ausreichen.

    
Joel 05.04.2010 17:20
quelle
5
%Vor%     
Pointy 05.04.2010 17:27
quelle
1
%Vor%

Verwenden Sie 60-seconds als Timeout-Zeit. Zugegeben, mit setTimeout 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.

    
Stefan Kendall 05.04.2010 17:18
quelle
1

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%     
Bartłomiej Mucha 01.02.2013 10:54
quelle
0
%Vor%     
goat 05.04.2010 17:23
quelle
0
%Vor%     
plodder 05.04.2010 17:33
quelle
0
___ 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
  1. Erhalten Sie die Sekunden, um eine Minute zu erreichen %code%
  2. 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%
  3. 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%     
___
yuvraj zohan 10.04.2017 12:57
quelle
0

Zuerst sollten wir sicherstellen, dass wir wissen, wie viel Zeit wir bis zur nächsten Minute haben:

%Vor%

Wenn Sie jetzt mit setTimeout arbeiten wollen, dann

%Vor%

Wenn du setInterval machen willst:

%Vor%     
Lajos Arpad 26.10.2017 13:11
quelle

Tags und Links