Maison  >  Article  >  interface Web  >  Explication détaillée de la minuterie JavaScript

Explication détaillée de la minuterie JavaScript

php中世界最好的语言
php中世界最好的语言original
2018-03-16 15:32:331629parcourir

Cette fois, je vous apporte une explication détaillée de Timer de JavaScript Quelles sont les précautions lors de l'utilisation de Timer de JavaScript, comme suit C'est un cas pratique, jetons-y un coup d'œil.

En plus de placer des événements de tâches asynchrones, "TaskQueue" peut également placer des événements chronométrés, c'est-à-dire spécifier combien de temps certains codes seront exécutés après . C'est ce qu'on appelle la fonction "Timer" (timer), qui est du code exécuté régulièrement.

La fonction timer est principalement complétée par les deux fonctions setTimeout() et setInterval(). Leurs mécanismes de fonctionnement internes sont exactement les mêmes. La différence est que le code spécifié par la première est. exécuté une fois. Ce dernier est exécuté à plusieurs reprises. Ce qui suit traite principalement de setTimeout().

setTimeout() accepte deux paramètres, le premier est la fonction de rappel et le second est le nombre de millisecondes pour retarder l'exécution.

console.log(1);setTimeout(function(){console.log(2);},1000);console.log(3);

Le résultat de l'exécution de ce qui précède le code est 1, 3, 2, car setTimeout() retarde l'exécution de la deuxième ligne jusqu'à 1 000 millisecondes plus tard.

Si le deuxième paramètre de setTimeout() est défini sur 0, cela signifie qu'une fois le code actuel exécuté (la pile d'exécution est effacée), la fonction de rappel spécifiée sera exécutée immédiatement (intervalle de 0 milliseconde).

setTimeout(function(){console.log(1);}, 0);console.log(2);

Le résultat de l'exécution du code ci-dessus est toujours 2, 1, car seulement après avoir exécuté la deuxième ligne, le système exécutera la fonction de rappel dans la "file d'attente des tâches".

En bref, la signification de setTimeout(fn,0) est de spécifier une tâche à exécuter dans le premier temps d'inactivité disponible du thread principal, c'est-à-dire à exécuter le plus tôt possible. Il ajoute un événement à la fin de la « file d'attente des tâches », il ne sera donc exécuté que lorsque la tâche de synchronisation et les événements existants dans la « file d'attente des tâches » auront été traités.

La norme HTML5 stipule que la valeur minimale (intervalle le plus court) du deuxième paramètre de setTimeout() ne doit pas être inférieure à 4 millisecondes. Si elle est inférieure à cette valeur, elle augmentera automatiquement. Avant cela, les anciens navigateurs fixaient l'intervalle minimum à 10 millisecondes. De plus, ces modifications du DOM (en particulier celles impliquant un nouveau rendu de page) ne sont généralement pas exécutées immédiatement, mais toutes les 16 millisecondes. À l'heure actuelle, l'effet de l'utilisation de requestAnimationFrame() est meilleur que celui de setTimeout().

Il convient de noter que setTimeout() insère uniquement l'événement dans la "file d'attente des tâches". Le thread principal doit attendre que le code actuel (pile d'exécution) ait fini de s'exécuter avant que le thread principal n'exécute la fonction de rappel. précise. Si le code actuel prend beaucoup de temps, cela peut prendre beaucoup de temps, il n'y a donc aucun moyen de garantir que la fonction de rappel sera exécutée à l'heure spécifiée par setTimeout().

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez faire attention au site Web php chinois Autres articles liés !

Lecture recommandée :

Boucle d'événements du mécanisme d'exécution de JavaScript

Événements et fonctions de rappel du mécanisme d'exécution de JavaScript

File d'attente des tâches du mécanisme d'exécution JavaScript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn