Skip to main content

SelfRefreshingCache

A cache which automatically refreshes itself if the value is found to be stale.

Signature

value

method(refreshArgs: RefreshArgs | [undefined] | []) => Promise<V>

The current value of the cache. If the value is stale, the data will be refreshed and then the fresh value will be returned.

memoize

method(args: Args, refreshArgs: RefreshArgs, fn: (value: V, ...args: Args) => R) => Promise<R>

Allows a memoized function to be defined. For the given arguments, the fn function will be invoked only once and its output cached and returned. The results cache is cleared along with the rest of the cache according to the configured ttl value.

refresh

method(args: RefreshArgs) => Promise<V>

Force a refresh of the value, e.g. when it is known that the value has changed such as after an update operation to the source data in the database.

Configuration options for creating a SelfRefreshingCache.

Signature

name

propertystring

The name of the cache, used for logging purposes. e.g. 'MyService.cachedValue'.

ttl

propertynumber

The time-to-live (ttl) in milliseconds for the cache. After this time, the value will be considered stale and will be refreshed the next time it is accessed.

refresh

property{ fn: (...args: RefreshArgs) => Promise<V>; /** * Default arguments, passed to refresh function */ defaultArgs: RefreshArgs; }

The function which is used to refresh the value of the cache. This function should return a Promise which resolves to the new value.

getTimeFn

property() => number

Intended for unit testing the SelfRefreshingCache only. By default uses () => new Date().getTime()

Creates a SelfRefreshingCache object, which is used to cache a single frequently-accessed value. In this type of cache, the function used to populate the value (refreshFn) is defined during the creation of the cache, and it is immediately used to populate the initial value.

From there, when the .value property is accessed, it will return a value from the cache, and if the value has expired, it will automatically run the refreshFn to update the value and then return the fresh value.

Example

Example of creating a SelfRefreshingCache
Signature

Parameters

config

parameterSelfRefreshingCacheConfig<V, RefreshArgs>

refreshArgs

parameterRefreshArgs
Was this chapter helpful?
Report Issue
Edited Feb 25, 2026ยทEdit this page