events: onceWrapper returns target value

PR-URL: https://github.com/nodejs/node/pull/25818
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
himself65 2019-01-30 22:34:55 +08:00 committed by Ruben Bridgewater
parent 905988ae68
commit acc506c2d2
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762
2 changed files with 19 additions and 1 deletions

View File

@ -283,7 +283,7 @@ function onceWrapper(...args) {
if (!this.fired) {
this.target.removeListener(this.type, this.wrapFn);
this.fired = true;
Reflect.apply(this.listener, this.target, args);
return Reflect.apply(this.listener, this.target, args);
}
}

View File

@ -27,6 +27,12 @@ const events = require('events');
function listener() {}
function listener2() {}
function listener3() {
return 0;
}
function listener4() {
return 1;
}
{
const ee = new events.EventEmitter();
@ -101,3 +107,15 @@ function listener2() {}
assert.strictEqual(wrappedListeners.length, 2);
assert.strictEqual(wrappedListeners[1].listener, listener);
}
{
const ee = new events.EventEmitter();
ee.once('foo', listener3);
ee.on('foo', listener4);
const rawListeners = ee.rawListeners('foo');
assert.strictEqual(rawListeners.length, 2);
assert.strictEqual(rawListeners[0](), 0);
const rawListener = ee.rawListeners('foo');
assert.strictEqual(rawListener.length, 1);
assert.strictEqual(rawListener[0](), 1);
}