setInterval Par la minute
Pour le javascript amateurs,
comment voulez-vous programme un setTimeOut
(ou setInterval
) poignée à feu par la minute. Ainsi, par exemple, si c'est le 51 seconde de l'heure actuelle, puis le feu en 9 secondes, si c'est le 14e second puis le feu dans 46 secondes
grâce
clarifier: question pour les développeurs javascript pour afficher des façons créatives d'utiliser settimeout setinterval construit dans les fonctions --
OriginalL'auteur bushman | 2010-04-05
Vous devez vous connecter pour publier un commentaire.
Évidemment, ce n'est pas précise à 100%, mais pour la majorité des cas, cela devrait être suffisant.
Vous avez besoin de recalculer à chaque fois.
Vous n'avez pas besoin de recalculer à chaque fois. Je suis d'accord
myFunction
doit être appelée après l'intervalle de temps (j'ai édité pour corriger), mais le retard dû àsetInterval
sera minuscule.Je pense que la fonction setInterval en javascript va se fixer si "myFunction" prend un certain temps à calculer.
Depuis
myFunction
est une référence, il ne sera pas nécessaire de calculer jusqu'à 60 secondes s'exécute, à l'intervalle suivant doit être mis en avant calculemyfunction()
.OriginalL'auteur Joel
%
opérateur peut être utilisé sur des objets Date directement, raccourcir votre code de60000 - (new Date() % 60000)
.wow - apprendre quelque chose de nouveau chaque jour!
justement ma raison, j'ai demandé le q? 🙂
OriginalL'auteur Pointy
Utilisation
60-seconds
que le délai d'attente le temps. Accordé,setTimeout
vous permet de spécifier millisecondes, ce qui signifie que vous devriez également vérifier millisecondes, mais cela vous donnera "assez proche" pour la plupart des applications. Si quoi que ce soit, ce qui devrait vous faire dépasser la minute d'une fraction de seconde, mais c'est mieux de dépassement de sous-dépassement. Se posant avant serait la cause de l'échec catastrophique avec cette méthode.OriginalL'auteur Stefan Kendall
Au premier abord, j'ai utilisé la solution proposée par Joël Potter. Sa solution est assez bonne dans la plupart des cas. Cependant, parce que le javascript est en train de faire une chose à la fois (sauf si vous utilisez des Travailleurs), il peut être en retard avec les premières délai d'expiration, de sorte que votre premier délai d'attente est exécutée, par exemple. 5 secondes trop tard et vous obtenez de l'intervalle sur toutes les 5 secondes après la minute.
Donc, voici mon oeuvre:
OriginalL'auteur Bartłomiej Mucha
Tout d'abord, faisons en sorte que nous savons de combien de temps disposons-nous jusqu'à la prochaine minute:
Maintenant, si vous voulez travailler avec
setTimeout
, puisSi vous voulez faire un
setInterval
:OriginalL'auteur Lajos Arpad
OriginalL'auteur goat
OriginalL'auteur plodder
Bien trop tard pour la réponse, j'ai eu le même problème à résoudre récemment et la pensée de partager mon approche. Mon problème était de courir un délai d'attente après un certain secondes en fonction de la distance, il est loin d'une minute, et par la suite intervalle d'exécution de la fonction de chaque minute. Voici ce que j'ai fait.
Disons que la date est javascript date objet créé à l'aide de
date = new Date();
secondsLeft = 60 - date.getSeconds();
Ensuite définir un délai d'attente de la fonction à exécuter après
secondsLeft
, et à l'intérieur de la fonction définie sur un intervalle de la fonction à exécuter à chaque minute:OriginalL'auteur yuvraj zohan