1、使用类方法 listenerCount 获取指定事件的监听数量替代方案。
eventEmitter.listeners('connection').length
2、removeListener('connection',callback); 此处参数 callback 必须和监听器中的回调函数是同一个,否则不生效。
EventEmitter 里面的 error 事件,EventEmitter 即使绑定了 error 事件,也是不会输出的。而是会在控制台打印该异常的堆栈信息,并结束进程。获取异常只能通过 try catch。
eventEmitter.on('error',function(err){ console.error('Error:',err); });
我测试了一下,绑定 error 事件。只能自己触发,eventEmitter.emit('error'); 当没有错误时,会在控制台打印 Error:undefined。有错误时,不会打印,直接打印该异常的堆栈信息,并结束进程。
1、eventEmitter.on()与eventEmitter.addListener()没有区别,且一个事件可以绑定多个回调函数;
2、若事件队列中出现一个未绑定事件则触发error事件,若未绑定 error事件则程序抛出异常结束执行
1、eventEmitter.emit 是触发事件(事件请求),eventEmitter.on是绑定处理事件的处理器(事件处理),事件的请求和处理是分开的,所以是异步。
2、如果把下面两个例子写在一起执行:
//例子1 var fs = require("fs"); fs.readFile('text.txt', function(err, data) { if (err) return console.error(err); console.log(data.toString()); console.log("end"); console.log("***********************"); }); //例子2 var events = require("events"); var eventEmitter = new events.EventEmitter(); var connectHandler = function connected() { console.log("connnect successfully !"); eventEmitter.emit("after_connect"); } eventEmitter.on("connected", connectHandler); eventEmitter.on('after_connect', function() { console.log("after connect"); }); eventEmitter.emit("connected"); console.log("event emitter end");
你会发现,例子 2 先输出,例子 1 后输出,可以验证是异步的,因为例子 1 需要进行 IO 耗时较长,但是例子 2 是直接输出信息,耗时较短,在两者几乎同时执行的情况下,例子 2 优先执行完。
首先说事件
事件就是需要 eventEmitter.on 去绑定一个事件 通过 eventEmitter.emit 去触发这个事件其次说的是 事件的 接收 和 发生 是分开的 就像 一个外卖店你可以不停的接受很多订单, 接受以后开始告诉厨师去做外卖, 做好的外卖对应的外送给每个用户,如果单线程的话那只能是接收一个订单, 做好以后在接收下一个外卖订单,明显效率非常低。
事件可以不停的接受不停的发生也是为了提高效率。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
811Node.js EventEmitter
1、使用类方法 listenerCount 获取指定事件的监听数量替代方案。
2、removeListener('connection',callback); 此处参数 callback 必须和监听器中的回调函数是同一个,否则不生效。
810Node.js EventEmitter
EventEmitter 里面的 error 事件,EventEmitter 即使绑定了 error 事件,也是不会输出的。而是会在控制台打印该异常的堆栈信息,并结束进程。获取异常只能通过 try catch。
我测试了一下,绑定 error 事件。只能自己触发,eventEmitter.emit('error'); 当没有错误时,会在控制台打印 Error:undefined。有错误时,不会打印,直接打印该异常的堆栈信息,并结束进程。
809Node.js EventEmitter
1、eventEmitter.on()与eventEmitter.addListener()没有区别,且一个事件可以绑定多个回调函数;
2、若事件队列中出现一个未绑定事件则触发error事件,若未绑定 error事件则程序抛出异常结束执行
808Node.js 事件循环
1、eventEmitter.emit 是触发事件(事件请求),eventEmitter.on是绑定处理事件的处理器(事件处理),事件的请求和处理是分开的,所以是异步。
2、如果把下面两个例子写在一起执行:
你会发现,例子 2 先输出,例子 1 后输出,可以验证是异步的,因为例子 1 需要进行 IO 耗时较长,但是例子 2 是直接输出信息,耗时较短,在两者几乎同时执行的情况下,例子 2 优先执行完。
807Node.js 事件循环
首先说事件
事件就是需要 eventEmitter.on 去绑定一个事件 通过 eventEmitter.emit 去触发这个事件其次说的是 事件的 接收 和 发生 是分开的 就像 一个外卖店你可以不停的接受很多订单, 接受以后开始告诉厨师去做外卖, 做好的外卖对应的外送给每个用户,如果单线程的话那只能是接收一个订单, 做好以后在接收下一个外卖订单,明显效率非常低。
事件可以不停的接受不停的发生也是为了提高效率。