The type of the value to be cached
The type of the callback function, defaults to () => T if not specified
A new readonly ICachedValue instance which wraps the callback and will be used to cache the result of the callback
// This does not cause the evaluation to occur
let cachedValue = getDeferred(() => callSomeExpensiveFunction());
let theValue;
// With arguments - the argument types are inferred from the callback
let cachedValueWithArgs = getDeferred(
(id: number, name: string) => callSomeExpensiveFunction(id, name),
[123, "test"]
);
// Just checking if there is an object still does not cause the evaluation
if (cachedValue) {
// This will cause the evaluation to occur and the result will be cached
theValue = cachedValue.v;
}
// Accessing the value again will not cause the re-evaluation to occur, it will just return the same
// result value again.
theValue === cachedValue.v; // true
Create and return a readonly ICachedValue instance which will cache and return the value returned by the callback function. The callback function will only be called once, multiple access of the value will not cause re-execution of the callback as the result from the first call is cached internally. This version supports passing arguments to the callback function. This is a lightweight version of getLazy which does not support any expiration or invalidation, it also will not honor the setBypassLazyCache setting and will always return the provided value. This is the same as createDeferredCachedValue but allows passing an array of arguments to the callback function.