Maison > Article > interface Web > Maîtrisez rapidement l'utilisation de setTimeout et setInterval dans Node.js
Node.js, comme js, dispose également de minuteries, de minuteries d'expiration, de minuteries d'intervalle, de minuteries ponctuelles et de la fonction process.nextTick(callback) pour implémenter la planification d'événements. Aujourd'hui, apprenons à utiliser setTimeout et setInterval.
1. Délai d'expiration setTimeout (similaire à after dans GCD)
Dans node.js, vous pouvez utiliser la méthode setTimeout(callback, delayMillSeconds, [args]) intégrée à node.js. . Lorsque setTime() est appelé, la fonction de rappel sera exécutée
après delayMillSeconds. setTime() renverra un ID d'objet timer, qui peut être annulé en transmettant l'ID à clearTimeout (timeoutId) avant l'expiration de delayMillSeconds.
function myfunc(){ console.log("myfunc"); }; var mytimeout=setTimeout(myfunc,1000); clearTimeout(mytimeout);
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js Process finished with exit code 0
Si vous commentez la ligne clearTimeout(mytimeout);, vous pouvez voir que myfunc() sera exécuté.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js myfunc Process finished with exit code 0
2. Minuterie d'intervalle setInterval (similaire à dispatch_source_t ou NSTimer dans GCD)
La minuterie d'intervalle est utilisée pour effectuer un travail à intervalles réguliers. , node.js a setInterval(callback, delayMilliSecond, [args]) intégré pour créer et renvoyer l'ID de l'objet timer, et l'annuler via clearInterval().
/** * Created by Administrator on 2016/3/11. */ function myfunc(Interval){ console.log("myfunc "+Interval); } var myInterval=setInterval(myfunc,1000,"Interval"); function stopInterval(){ clearTimeout(myInterval); //myInterval.unref(); } setTimeout(stopInterval,5000);
Le code ci-dessus sert à créer la fonction de rappel myfunc de setInterval. Le paramètre est Interval. setInterval est exécuté toutes les 1 secondes. Sa fonction de rappel le permet. l'intervalle La minuterie est annulée.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Interval.js myfunc Interval myfunc Interval myfunc Interval myfunc Interval Process finished with exit code 0
3. Annulez la référence du timer de la boucle d'événements
Lorsque seules les fonctions de rappel du timer existent dans la file d'attente des événements, si vous ne souhaitez pas les exécuter Plus, vous pouvez utiliser la fonction unref() de l'objet renvoyé par setInterval et setTimeout pour notifier à la boucle d'événements de ne pas continuer.
Lorsque unref() est utilisé en combinaison avec setTimeout, un timer indépendant doit être utilisé pour réveiller la boucle d'événements. Une utilisation intensive aura également un impact sur les performances, alors utilisez-la le moins possible.
4. Le temps d'exécution de setTimeout et setInterval n'est pas précis
Ils ajoutent des rappels à la file d'attente des événements à certains intervalles, et l'exécution n'est pas non plus trop précise
function simpleTimeout(consoleTime) { console.timeEnd(consoleTime); } console.time("twoSecond"); setTimeout(simpleTimeout,2000,"twoSecond"); console.time("oneSecond"); setTimeout(simpleTimeout,1000,"oneSecond"); console.time("fiveSecond"); setTimeout(simpleTimeout,5000,"fiveSecond"); console.time("50MillSecond"); setTimeout(simpleTimeout,50,"50MillSecond");
Les résultats de sortie de l'exécution du code ci-dessus plusieurs fois seront différents.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js 50MillSecond: 51ms oneSecond: 1000ms twoSecond: 2002ms fiveSecond: 5001ms Process finished with exit code 0
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde d'apprendre à utiliser setTimeout et setInterval dans Node.js.
Pour plus d'articles sur la façon de maîtriser rapidement setTimeout et setInterval dans Node.js, veuillez faire attention au site Web PHP chinois !