Maison >interface Web >js tutoriel >Maîtrisez rapidement l'utilisation de setTimeout et setInterval dans Node.js

Maîtrisez rapidement l'utilisation de setTimeout et setInterval dans Node.js

高洛峰
高洛峰original
2017-02-08 15:54:261307parcourir

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 !

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