Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung verschiedener Verwendungscodes der EventEmitter-Klasse in node.js

Detaillierte Erläuterung verschiedener Verwendungscodes der EventEmitter-Klasse in node.js

伊谢尔伦
伊谢尔伦Original
2017-07-24 10:53:351500Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn