Node.js EventEmitter 이벤트 큐
Node.js 모든 비동기 I/O 작업은 완료되면 이벤트 큐에 이벤트를 보냅니다.
이벤트 큐의 메소드와 인스턴스에 대해 자세히 설명하겠습니다
method:
[code]1.addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。 2.on(event, listener) 为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。 3.once(event, listener) 为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。 4.removeListener(event, listener) 移除指定事件的某个监听器,监听器 必须是该事件已经注册过的监听器。 5.removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器 6.setMaxListeners(n) 默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。 7.listeners(event) 返回指定事件的监听器数组。 8.emit(event, [arg1], [arg2], [...]) 按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
클래스 메소드
[code]1.listenerCount(emitter, event) 返回指定事件的监听器数量。
Event
[code]1.newListener event - 字符串,事件名称 listener - 处理事件函数 该事件在添加新监听器时被触发 2.removeListener event - 字符串,事件名称 listener - 处理事件函数 从指定监听器数组中删除一个监听器。需要注意的是,此操作将会改变处于被删监听器之后的那些监听器的索引。
[code]// 引入 events 模块 var events = require('events'); // 创建 EventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 注册监听器 eventEmitter.on('some_event', function () { console.log('some_event 事件触发'); }); // 计时器 setInterval(function () { // 触发 some_event 监听器 eventEmitter.emit('some_event'); }, 1000);
사례 2: 이벤트 큐에 매개변수 전달
event2.js
[code]var events = require('events'); var eventEmitter = new events.EventEmitter(); eventEmitter.on('listener', function (arg1, arg2) { console.log('listener1', arg1, arg2); }) eventEmitter.on('listener', function (arg1, arg2) { console.log('listener2', arg1, arg2); }); eventEmitter.emit('listener', 'zhang', 'li');
사례 3: 동일한 리스너에 대해 두 개의 이벤트 핸들러 등록
[code]var events = require('events'); var eventEmitter = new events.EventEmitter(); var listener1 = function (arg1, arg2) { console.log('listener1', arg1, arg2); }; var listener2 = function (arg1, arg2) { console.log('listener2', arg1, arg2); }; // 注册监听器 eventEmitter.on('listener', listener1); eventEmitter.on('listener', listener2); // 触发监听器事件 // eventEmitter.emit('listener', 'zhang', 'li'); var listenerLength = require('events').EventEmitter.listenerCount(eventEmitter, 'listener'); eventEmitter.emit('listener', 'zhang', 'li'); console.log('listener 监听器注册 ' + listenerLength + ' 个事件处理函数');
위는 Node.js 이벤트큐 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!