Maison >interface Web >js tutoriel >À propos de l'utilisation de la boucle temporelle Node.js
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é.// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter(); 以下程序绑定事件处理程序: // 绑定事件及事件的处理程序eventEmitter.on('eventName', eventHandler); 我们可以通过程序触发事件: // 触发事件eventEmitter.emit('eventName');ExempleCré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("程序执行完毕。");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.
Créez le fichier main.js avec le code suivant :
var fs = require("fs");fs.readFile('input.txt', function (err, data) { if (err){ console.log(err.stack); return; } console.log(data.toString());});console.log("程序执行完毕");
Recommandations associées :
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!