Maison > interface Web > js tutoriel > setTimeout() prend plus de temps que le temps indiqué dans le paramètre

setTimeout() prend plus de temps que le temps indiqué dans le paramètre

Barbara Streisand
Libérer: 2025-01-04 21:48:40
original
1056 Les gens l'ont consulté

setTimeout() takes more time than given time in param

setTimeout ne fait pas partie du noyau JavaScript. Oui, vous avez bien entendu. Il fait partie des API web fournies par le navigateur (dans un environnement web) ou des API Node.js dans un environnement côté serveur.
Comme nous le savons tous, la méthode setTimeout prend la fonction CB comme paramètre. L'autre paramètre est le temps en ms au bout duquel le CB doit être exécuté.
Mais attendez, il n'est pas nécessaire que setTimeout s'exécute toujours à des paramètres de temps donnés. Si notre pile d'appels ou, par exemple, le thread principal est bloqué par un morceau de code, alors setTimeout est immédiatement exécuté dans la pile d'appels une fois le code de blocage terminé. Jusque-là, il reste stocké dans la file d'attente de rappel du navigateur ou la file d'attente des tâches.

console.log("HELLO");
setTimeout(() => console.log("Timeout executed"), 5000); //should be execute after 5sec
let start = new Date().getTime();
let end= start;
while (end < start + 10000){
  end= new Date.getTime();
} //This loop will block the main thread for 10sec
 console.log("Time Expire");

//output---
//HELLO
//Time Expire
//Timeout executed  (Immediately just after Time expire)
Copier après la connexion

Il existe également un cas : que se passe-t-il si nous fournissons un temps de 0 ms dans setTimeout. Est-il exécuté de manière séquentielle comme l'exécution normale de code.
La réponse est non car setTimeout va d'abord dans la file d'attente CB contrairement aux autres fonctions qui s'exécutent immédiatement en premier dans la pile d'appels.

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal