UNPKG

rc-js-util

Version:

A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.

24 lines (21 loc) 487 B
/** * @public * Creates a function that can be called many times but will run at most once. * * @remarks * See {@link fpOnce}. */ export function fpOnce<TArgs extends unknown[], TRet>(initialize: (...args: TArgs) => TRet): (...args: TArgs) => TRet { let item: TRet; let initialized = false; return (...args) => { if (initialized) { return item; } initialized = true; return item = initialize(...args); }; }