Maison > interface Web > js tutoriel > À propos de l'utilisation de la boucle temporelle Node.js

À propos de l'utilisation de la boucle temporelle Node.js

jacklove
Libérer: 2018-05-07 09:31:34
original
1627 Les gens l'ont consulté

Node.js a de meilleures performances, il est donc souvent utilisé, c'est pourquoi cet article l'expliquera en détail.

Node.js est une application à processus unique et à thread unique, mais prend en charge la concurrence via des événements et des rappels, ses performances sont donc très élevées.

Chaque API de Node.js est asynchrone et s'exécute comme un thread indépendant, utilise des appels de fonction asynchrones et gère la concurrence.

Fondamentalement, tous les mécanismes d'événements dans Node.js sont implémentés à l'aide du modèle d'observateur dans le modèle de conception.

Le thread unique Node.js est similaire à la saisie d'une boucle d'événement while(true) jusqu'à ce qu'aucun observateur d'événement ne se termine. Chaque événement asynchrone génère un observateur d'événement. Si un événement se produit, la fonction de rappel est appelée.

Programme basé sur les événements

Node.js utilise le modèle basé sur les événements Lorsque le serveur Web reçoit une requête, il la ferme et la traite, puis sert la requête Web suivante.

Lorsque cette requête est terminée, elle est remise dans la file d'attente de traitement, et lorsque le début de la file d'attente est atteint, le résultat est renvoyé à l'utilisateur.

Ce modèle est très efficace et évolutif car le serveur Web accepte toujours les requêtes sans attendre aucune opération de lecture ou d'écriture. (Cela est également appelé IO non bloquant ou IO piloté par événement)

Dans le modèle piloté par événement, une boucle principale est générée pour écouter les événements, et une fonction de rappel est déclenchée lorsqu'un événement est détecté.


C'est ainsi que l'ensemble du processus événementiel est mis en œuvre, ce qui est très simple. Un peu similaire au modèle d'observateur, l'événement est équivalent à un sujet (Sujet) et toutes les fonctions de gestionnaire enregistrées pour cet événement sont équivalentes à des observateurs (Observateur).

Node.js a plusieurs événements intégrés. Nous pouvons lier et écouter des événements en introduisant le module d'événements et en instanciant la classe EventEmitter, comme indiqué ci-dessous :

// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();
以下程序绑定事件处理程序:
// 绑定事件及事件的处理程序eventEmitter.on('eventName', eventHandler);
我们可以通过程序触发事件:
// 触发事件eventEmitter.emit('eventName');
Copier après la connexion
Exemple

Créez le fichier main.js, le code est le suivant :

// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();// 创建事件处理程序var connectHandler = function connected() {
   console.log('连接成功。');
  
   // 触发 data_received 事件 
   eventEmitter.emit('data_received');}// 绑定 connection 事件处理程序eventEmitter.on('connection', connectHandler);
 // 使用匿名函数绑定 data_received 事件eventEmitter.on('data_received', function(){
   console.log('数据接收成功。');});// 触发 connection 事件 eventEmitter.emit('connection');console.log("程序执行完毕。");
Copier après la connexion
Ensuite, exécutons le code ci-dessus :

La connexion $ node main.js est réussie. Données reçues avec succès. L'exécution du programme est terminée.


Comment fonctionnent les applications Node ?

Dans les applications Node, les fonctions qui effectuent des opérations asynchrones prennent une fonction de rappel comme dernier paramètre, et la fonction de rappel reçoit un objet d'erreur comme premier paramètre.

Reprenons ensuite l'exemple précédent et créons un input.txt. Le contenu du fichier est le suivant :

Adresse du site officiel du tutoriel rookie : www.runoob.com<. 🎜>


Créez le fichier main.js avec le code suivant :

Ce qui précède présente l'utilisation de Node.js en détail. Si vous souhaitez en savoir plus sur les connaissances connexes, veuillez. faites attention au site Web chinois php.
var fs = require("fs");fs.readFile(&#39;input.txt&#39;, function (err, data) {
   if (err){
      console.log(err.stack);
      return;
   }
   console.log(data.toString());});console.log("程序执行完毕");
Copier après la connexion

Recommandations associées :


Explication détaillée du principe de réutilisation des ports dans Node.Js

Quels sont les emails d'inscription méthodes d'activation pour la méthode Node.js

Comment Node.Js implémente l'adresse Bitcoin

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal