Memoized顾名思义,就是带有记忆功能的函数,即把方法的执行结果缓存起来,下次调用时,如果调用函数的参数一样,那无需重复计算,直接返回之前缓存的结果。
store.js:
function memoized() {
if (overrideResult !== undefined) {
return overrideResult.result;
}
if (!lastArguments) {
lastResult = projectionFn.apply(null, (/** @type {?} */ (arguments)));
lastArguments = arguments;
return lastResult;
}
if (!isArgumentsChanged(arguments, lastArguments, isArgumentsEqual)) {
return lastResult;
}
/** @type {?} */
const newResult = projectionFn.apply(null, (/** @type {?} */ (arguments)));
lastArguments = arguments;
if (isResultEqual(lastResult, newResult)) {
return lastResult;
}
lastResult = newResult;
return newResult;
}
return { memoized, reset, setResult, clearResult };