@jsenv/util
Version:
Set of functions often needed when using Node.js.
25 lines (21 loc) • 567 B
JavaScript
export const memoize = (compute) => {
let memoized = false
let memoizedValue
const fnWithMemoization = (...args) => {
if (memoized) {
return memoizedValue
}
// if compute is recursive wait for it to be fully done before storing the value
// so set memoized boolean after the call
memoizedValue = compute(...args)
memoized = true
return memoizedValue
}
fnWithMemoization.forget = () => {
const value = memoizedValue
memoized = false
memoizedValue = undefined
return value
}
return fnWithMemoization
}