RevelaOS/node_modules/just-once/index.js
2023-10-15 23:53:41 +01:00

25 lines
403 B
JavaScript

module.exports = once;
/*
let i = 0;
const getFirst = once(() => ++i);
getFirst(); // 1
getFirst(); // 1
*/
function once(fn) {
var called, value;
if (typeof fn !== 'function') {
throw new Error('expected a function but got ' + fn);
}
return function wrap() {
if (called) {
return value;
}
called = true;
value = fn.apply(this, arguments);
return value;
};
}