Maison  >  Article  >  interface Web  >  Y a-t-il une minuterie dans node.js ?

Y a-t-il une minuterie dans node.js ?

WBOY
WBOYoriginal
2022-07-04 17:28:511858parcourir

Il y a un timer dans "node.js" ; le module timer dans "node.js" contient une fonction qui exécute le code pendant une certaine période de temps. Le timer n'a pas besoin d'être introduit via require() car tout. les méthodes sont simulées, les fonctions JavaScript dans les navigateurs sont globales ; la fonction timer dans "node.js" implémente une API similaire à l'API timer fournie par les navigateurs Web.

Y a-t-il une minuterie dans node.js ?

L'environnement d'exploitation de cet article : système Windows 10, nodejs version 12.19.0, ordinateur Dell G3.

Il y a une minuterie dans node.js

La minuterie dans Node.js

Le module timer dans Node.js contient des fonctions qui exécutent du code à certains intervalles. Le timer n'a pas besoin d'être introduit via require(), car toutes ces méthodes simulent les fonctions JavaScript dans le navigateur et sont globales. Pour avoir une meilleure compréhension globale du moment où ces fonctions seront exécutées, c'est une bonne idée de lire Event Polling dans Node.js.

Contrôlez la continuité temporelle avec Node.js

Les fonctions API de Node.js offrent plusieurs façons de permettre au code de commencer à s'exécuter à un certain moment après l'heure actuelle. Les fonctions indiquées ci-dessous se ressemblent car elles sont disponibles dans la plupart des navigateurs. Mais Node.js fournit en fait sa propre implémentation. Les minuteries sont très étroitement intégrées au système et, bien que ces API soient des copies des fonctions du navigateur, elles sont toujours implémentées différemment.

timer est utilisé pour planifier l'appel d'une fonction à un certain moment dans le futur. La fonction timer dans Node.js implémente une API similaire à l'API timer fournie par le navigateur Web, mais utilise une implémentation de boucle d'événements dans Node. .js Il existe quatre méthodes liées

setTimeout(callback, delay[, ...args])
setInterval(callback[, ...args])
setImmediate(callback[, ...args])
process.nextTick(callback[, ...args])

Les exemples sont les suivants :

setTimeout() peut être utilisé pour exécuter une certaine tâche de code après une période de temps spécifiée. Cette fonction est très similaire à la fonction JavaScript du navigateur window.setTimeout(), mais vous ne pouvez pas transmettre une chaîne en exécution.

setTimeout() accepte une fonction exécutable comme premier paramètre, puis un temps de retard en millisecondes comme deuxième paramètre. Les paramètres restants peuvent également être inclus en tant que paramètres transmis à cette fonction. Voici un exemple :

function myFunc(arg) {
  console.log(`arg was => ${arg}`);
}
setTimeout(myFunc, 1500, 'funky');

Parce que setTimeout() est utilisé, la fonction ci-dessus myFunc() sera exécutée environ 1 500 millisecondes (ou 1,5 seconde).

L'intervalle de synchronisation défini ne peut pas garantir que le code sera exécuté à un intervalle précis d'une milliseconde à chaque fois. En effet, un autre code bloquant ou traité lors de l'interrogation d'événements retardera l'exécution de cette synchronisation. La seule garantie est que le timer ne s'exécutera pas avant l'intervalle déclaré.

setTimeout() renvoie un objet Timeout à travers lequel la minuterie définie peut être référencée. L'objet renvoyé peut être utilisé pour annuler le timing (voir clearTimeout() ci-dessous) et pour modifier le comportement d'exécution (voir unref() ci-dessous).

"Exécuter immédiatement après" setImmediate()

setImmediate() sera exécuté à la fin du sondage d'événement en cours. Ce code s'exécutera après toute opération d'E/S dans l'interrogation d'événement en cours et avant tout prochain cycle de minuterie. L'exécution du code peut être considérée comme "l'exécution immédiatement après", ce qui signifie que tout appel de fonction setImmediate() immédiatement suivant s'exécutera avant les paramètres de la fonction setImmediate(). Le premier paramètre de

setImmediate() est la fonction à exécuter, une fois exécutés, les paramètres suivants seront transmis à cette fonction en tant que paramètres. Voici un exemple :

console.log('before immediate');
setImmediate((arg) => {
  console.log(`executing immediate: ${arg}`);
}, 'so immediate');
console.log('after immediate');

La fonction ci-dessus passée dans setImmediate() sera exécutée après l'exécution de tout code exécutable, le résultat est donc :

before immediate
after immediate
executing immediate: so immediate

setImmediate() renvoie un objet Immediate, qui peut être utilisé pour annuler Scheduled. tâches planifiées (voir clearImmediate() ci-dessous).

Remarque : ne confondez pas setImmediate() avec process.nextTick(). Ils présentent quelques différences majeures : premièrement, process.nextTick() s'exécutera avant tout réglage immédiat et avant toute E/S planifiée. Deuxièmement, process.nextTick() n'est pas effaçable. En d'autres termes, une fois le code exécuté à l'aide de process.nextTick(), l'exécution ne peut pas être interrompue. Pour plus de détails, vous pouvez vous référer à ce tutoriel. en savoir plus à ce sujet. Comprendre le fonctionnement de process.nextTick().

Exécution "Forever polling" ~ setInterval()

S'il y a une fonction qui doit être exécutée plusieurs fois, setInterval() peut s'avérer utile. setInterval() accepte une fonction comme paramètre, qui sera exécutée une infinité de fois. Le deuxième paramètre est un délai donné en millisecondes. Tout comme setTimeout(), les paramètres restants peuvent être ajoutés après cela et utilisés comme arguments passés à l'appel de fonction. Un autre point similaire à setTimeout() est qu'il n'est pas garanti que le délai soit précis, car certaines opérations peuvent être bloquées lors de l'interrogation de l'événement, ce qui peut donc être considéré comme un délai approximatif. Comme dans l'exemple suivant :

function intervalFunc() {
  console.log('Cant stop me now!');
}
setInterval(intervalFunc, 1500);

Dans l'exemple ci-dessus, intervalFunc() s'exécute toutes les 1 500 millisecondes (ou toutes les 1,5 secondes) jusqu'à ce qu'il soit terminé.

Comme setTimeout(), setInterval() renvoie également un objet Timeout, qui peut être référencé et modifier la minuterie définie.

Apprentissage recommandé : "Tutoriel vidéo Nodejs"

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