Heim > Artikel > Web-Frontend > Detaillierte Erläuterung verschiedener Verwendungscodes der EventEmitter-Klasse in node.js
EventEmitter-Klasse
Im Ereignismodul von Node.js, das zur Implementierung verschiedener Ereignisverarbeitungen verwendet wird, ist eine EventEmitter-Klasse definiert. Alle Objekte, die Ereignisse auslösen können, sind Instanzobjekte, die eine Unterklasse der EventEmitter-Klasse integrieren. In Node.js sind viele Methoden für die Ereignisverarbeitungsfunktion des Objekts definiert Aufrufe dieser Methoden.
Ereignis: stellt den Ereignisnamen dar
Listener: stellt die Ereignisverarbeitungsfunktion dar
Die Parameter in Klammern geben an, dass der Parameter ein optionaler Parameter ist
on-Methode der EventEmitter-Klasse
var http = require("http"); var server = http.createServer(); server.on("request", function(req, res){ console.log(req.url); res.end(); }); server.listen(1337, "127.0.0.1");
In diesem Code geben wir das an, wenn der Server Wenn der Client eine Anfrage stellt, geben Sie die URL-Adresse des vom Client angeforderten Ziels in Ihrem Konsolenfenster aus und verwenden Sie die Endmethode des Antwortobjekts, um die Antwort sofort zu beenden.
Führen Sie den Code aus und geben Sie dann Folgendes ein: http://localhost:1337:// im Browserfenster. Die Konsolenausgabe lautet wie folgt:
Konsolenausgabe
Natürlich können Sie durch die Ausführung mehrerer on-Methoden auch mehrere Event-Handler an dasselbe Event binden. Wie folgt:
var http = require("http"); var server = http.createServer(); server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
OK, führen Sie den Code aus. Die Konsolenausgabe lautet wie folgt:
Konsolenausgabe
Darüber hinaus können standardmäßig bis zu 10 Zeitverarbeitungsfunktionen an dasselbe angegebene Ereignis gebunden werden. Die maximale Anzahl der Ereignisbehandlungsfunktionen, die gebunden werden können, kann über die setMaxListeners-Methode wie folgt geändert werden:
emitter.setMaxListeners(n)
once-Methode der EventEmitter-Klasse
Die Once-Methode der EventEmiiter-Klasse ähnelt der On-Methode. Ihre Funktion besteht darin, die Ereignisverarbeitungsfunktion an das angegebene Ereignis zu binden. Der Unterschied besteht darin, dass die Ereignisverarbeitungsfunktion einmal ausgeführt wird , es wird sofort kontaktiert, das heißt, die Ereignisverarbeitungsfunktion wird nur einmal ausgeführt. Die von der Once-Methode verwendeten Parameter sind dieselben wie die von der On-Methode verwendeten Parameter wie folgt:
emitter.once(event, listener)
Führen Sie ein Experiment durch.
Oder führen Sie den folgenden Code aus (wie oben):
var http = require("http"); var server = http.createServer(); server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
Öffnen Sie dann 127.0.0.1:1337 zweimal hintereinander im Browser Fenster, Steuerung Die Stationsausgabe ist wie folgt:
wird zweimal angezeigt
und dann wird das Ein-Ereignis in ein Einmal-Ereignis geändert, der Code lautet wie folgt folgt:
var http = require("http"); var server = http.createServer(); server.once('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.once('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
Die Konsolenausgabe lautet wie folgt:
Die Anfrage wird 2 Mal verarbeitet, der Rest nur einmal gedruckt!
Verwenden Sie die Methode „removeListener“, um die Event-Handler-Funktion abzubrechen
Der Code lautet wie folgt:
var http = require("http"); var server = http.createServer(); var testFunction = function (req,res) { console.log('发送响应完毕') } server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', testFunction) //删除 server.removeListener('request', testFunction) server.listen(1337, "127.0.0.1");
Führen Sie den Code aus, geben Sie 127.0.0.1:1337 in das Browserfenster ein. Die Konsolenausgabe lautet wie folgt
Konsolenausgabe
Emit-Methode: Passen Sie das Ereignis an und lösen Sie es aus
Der Code lautet wie folgt:
var http = require("http"); var server = http.createServer(); server.on("request", function(req, res){ console.log(req.url); }); //自定义事件 server.on("customEvent", function(arg1, arg2, arg3){ console.log("自定义事件被触发"); console.log(arg1); console.log(arg2); console.log(arg3); }); //触发自定义事件 server.emit('customEvent', '自定义参数1', '自定义参数2', '自定义参数3') server.listen(1337, "127.0.0.1");
Geben Sie die Adresse dieses Mal nicht in das Browserfenster ein. Führen Sie den Code direkt aus, um die Konsolenausgabe anzuzeigen:
Konsolenausgabe
gibt an, dass wir das benutzerdefinierte Ereignis, nämlich „customEvent“, manuell ausgelöst haben.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung verschiedener Verwendungscodes der EventEmitter-Klasse in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!