process.send = data => { if (data && data.ava) { const name = data.name.replace(/^ava-/, ''); if (events.listeners(name).length > 0) { events.emit(name, data.data); } else { console.log('UNHANDLED AVA EVENT:', name, data.data); } return; } console.log('NON AVA EVENT:', data); };
const common = require('../common'); const assert = require('assert'); const EventEmitter = require('events'); function listener1() {} function listener2() {} { const ee = new EventEmitter(); ee.on('hello', listener1); ee.on('removeListener', common.mustCall((name, cb) => { assert.strictEqual(name, 'hello'); assert.strictEqual(cb, listener1); })); ee.removeListener('hello', listener1); assert.deepStrictEqual([], ee.listeners('hello')); } { const ee = new EventEmitter(); ee.on('hello', listener1); ee.on('removeListener', common.mustNotCall()); ee.removeListener('hello', listener2); assert.deepStrictEqual([listener1], ee.listeners('hello')); } { const ee = new EventEmitter(); ee.on('hello', listener1); ee.on('hello', listener2); ee.once('removeListener', common.mustCall((name, cb) => {
'use strict'; const common = require('../common'); const EventEmitter = require('events'); const assert = require('assert'); const ee = new EventEmitter(); const foo = Symbol('foo'); const listener = common.mustCall(function() {}); ee.on(foo, listener); assert.deepEqual(ee.listeners(foo), [listener]); ee.emit(foo); ee.removeAllListeners(); assert.deepEqual(ee.listeners(foo), []); ee.on(foo, listener); assert.deepEqual(ee.listeners(foo), [listener]); ee.removeListener(foo, listener); assert.deepEqual(ee.listeners(foo), []);
const ee = new EventEmitter(); const handler = () => {}; assert.strictEqual(ee._events.hasOwnProperty, undefined); assert.strictEqual(ee._events.toString, undefined); ee.on('__proto__', handler); ee.on('__defineGetter__', handler); ee.on('toString', handler); assert.deepStrictEqual(ee.eventNames(), [ '__proto__', '__defineGetter__', 'toString' ]); assert.deepStrictEqual(ee.listeners('__proto__'), [handler]); assert.deepStrictEqual(ee.listeners('__defineGetter__'), [handler]); assert.deepStrictEqual(ee.listeners('toString'), [handler]); ee.on('__proto__', common.mustCall(function(val) { assert.strictEqual(val, 1); })); ee.emit('__proto__', 1); process.on('__proto__', common.mustCall(function(val) { assert.strictEqual(val, 1); })); process.emit('__proto__', 1);
} { const listen1 = () => {}; const listen2 = () => {}; const ee = new EventEmitter(); ee.once('newListener', function() { assert.deepStrictEqual(ee.listeners('hello'), []); ee.once('newListener', function() { assert.deepStrictEqual(ee.listeners('hello'), []); }); ee.on('hello', listen2); }); ee.on('hello', listen1); // The order of listeners on an event is not always the order in which the // listeners were added. assert.deepStrictEqual(ee.listeners('hello'), [listen2, listen1]); } // Verify that the listener must be a function common.expectsError(() => { const ee = new EventEmitter(); ee.on('foo', null); }, { code: 'ERR_INVALID_ARG_TYPE', type: TypeError, message: 'The "listener" argument must be of type Function. ' + 'Received type object' });
var EventEmmiter = require('events'); var e = new EventEmmiter(); function x1() { console.log(1); } //我们每一个函数都有最大监听数,默认10个 e.setMaxListeners(2);//warning 警告 e.once('休息1',x1); //指定监听数量 x1的个数 console.log(e.listenerCount('休息1')); //就近移除 // e.removeListener('休息',x1); //清除所有的,此方法可以移除掉所有监听或者指定名字移除 // e.removeAllListeners('休息'); // e.emit('休息1'); console.log(e.listeners('休息1')); //获取当前函数池