1-liners
Version:
Useful oneliners and shorthand functions
30 lines (27 loc) • 655 B
JavaScript
/**
* @module 1-liners/once
*
* @description
*
* Creates a function that is restricted to invoking passed function once.
*
* @example
*
* const once = require('1-liners/once');
* let count = 0;
* let countOnce = once(() => ++count);
* countOnce(); // => 1, (count = 1)
* countOnce(); // => 1, (count = 1)
*
*/
;
exports.__esModule = true;
exports["default"] = function (fn) {
return (function () {
var first = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
return function () {
return first ? (first = !first, fn = fn()) : fn;
};
})();
};
module.exports = exports["default"];