控制台输出
另外,在默认情况下,针对同一个指定事件,最多可以绑定10个时间处理函数。可以通过setMaxListeners方法修改最多可以绑定的事件处理函数数量,方法如下:
emitter.setMaxListeners(n)EventEmitter类的once方法
EventEmiiter类的once方法与on方法类似,作用均为对指定事件绑定事件处理函数,区别在于,当事件处理函数执行一次后立即被接触,即该事件处理函数只会被执行一次。once方法所用参数与on方法所用参数相同,如下:
emitter.once(event, listener)做个试验。
还是执行如下代码(同上):
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");
然后,在浏览器窗口中连续打开两次127.0.0.1:1337,控制台输出如下:

显示了两次
然后将on事件修改为once事件,代码如下:
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");
控制台输出如下:

请求处理2次,其余只打印1次!
使用removeListener方法取消事件处理函数
代码如下:
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");









