Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 8x 1x 1x 2x 1x 1x 2x | /**
* Creates a function that is restricted to invoking `func` once. Repeat calls to the function return the value of the first invocation.
* @param fn the function to wrap
* @signature P.once(fn)
* @example
* const initialize = P.once(createApplication);
* initialize();
* initialize();
* // => `createApplication` is invoked once
* @category Function
*/
export function once<T>(fn: () => T): () => T {
let called = false;
let ret: T;
return () => {
if (!called) {
ret = fn();
called = true;
}
return ret;
};
}
|