Node.JS 中绑定事件的方法: Node.JS 中使用 on(arg1,arg2); 绑定事件, 第一个参数是触发条件, 第二个参数为触发的方法.
事件驱动程序:
当 web server 接收到请求, 就把它关闭然后进行处理, 然后去服务下一个 Web 请求.
当这个请求完成, 它被放回处理队列, 当到达队列开头, 这个结果被返回给用户.
webserver 一直接受请求而不需要等待读写操作(非阻塞式 IO)
- var es = require('events');
- var ee = new es.EventEmitter();
- ee.on('eventName',function () {
- console.log('hello word');
- });
- // 绑定方法
- ee.emit('eventName');
- // 触发方法
运行结果如下:
on(arg1,arg2);
绑定方法, 第一个参数是触发条件, 第二个参数为触发的方法.
通过查看源码可以知道, 它的原理在于, 创建一个名为 events 的数组, 绑定方法的时候, 如果该触发条件没有绑定相应的方法 (即 events['eventName'] 不存在), 那么就将该方法赋值给 events['eventName'], 如果存在且该函数优先考虑, 则 events['eventName'] = [new function,old function]反之为 events['eventName'] = [old function,new function], 如果 events['eventName']的类型不为 function, 则将新的方法压入栈.
- var events = require('events');
- var ee = new events.EventEmitter();
- var Handler = function conn() {
- console.log('绑定第一个 event.');
- ee.emit('event2');
- };
- ee.on('event1',Handler);
- ee.on('event2',function () {
- console.log('绑定第二个 event');
- });
- ee.emit('event1');
运行结果如下:
常用方法:
1,addListener(event, listener)
为指定事件添加一个监听器到监听器数组的尾部.
2,on(event, listener)
为指定事件注册一个监听器, 接受一个字符串 event 和一个回调函数.
- server.on('connection', function (stream) {
- console.log('someone connected!');
- });
- 3,once(event, listener)
为指定事件注册一个单次监听器, 即监听器最多只会触发一次, 触发后立刻解除该监听器.
- server.once('connection', function (stream) {
- console.log('Ah, we have our first user!');
- });
- 4,removeListener(event, listener)
移除指定事件的某个监听器, 监听器必须是该事件已经注册过的监听器.
它接受两个参数, 第一个是事件名称, 第二个是回调函数名称.
- var callback = function(stream) {
- console.log('someone connected!');
- };
- server.on('connection', callback);
- // ...
- server.removeListener('connection', callback);
- 5,removeAllListeners([event])
移除所有事件的所有监听器, 如果指定事件, 则移除指定事件的所有监听器.
6,setMaxListeners(n)
默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息. setMaxListeners 函数用于提高监听器的默认限制的数量.
7,listeners(event)
返回指定事件的监听器数组.
8,emit(event, [arg1], [arg2], [...])
按参数的顺序执行每个监听器, 如果事件有注册监听返回 true, 否则返回 false.
9,listenerCount(emitter, event)
返回指定事件的监听器数量.
来源: http://www.css88.com/qa/node-js/10799.html