on-one
Version:
Subscribe to one or more events and accept the first emitted
33 lines • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return onOne;
}
});
var isArray = Array.isArray || function(x) {
return Object.prototype.toString.call(x) === '[object Array]';
};
function onOne(emitter, nameOrNames, fn) {
var names = isArray(nameOrNames) ? nameOrNames : [
nameOrNames
];
var called = false;
function wrapper() {
if (called) return;
called = true;
// cleanup
names.forEach(function(name) {
return emitter.removeListener(name, wrapper);
});
// biome-ignore lint/complexity/noArguments: Apply arguments
return fn.apply(null, arguments);
}
names.forEach(function(name) {
return emitter.on(name, wrapper);
});
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }