红叶何时落水
需求场景
在请求数据时,我们免不了要对数据进行一些修饰,加一些前缀,组合一下字符串;那么当我们在不同页面请求同一组数据时,又不愿页面间传递参数时,我们便可以对数据处理函数进行修饰。
function mathed(str) {
console.log('math');
return str + 'd';
}
function cached(fn) {
var cache = Object.create(null);
return (function cachedFn(str) {
console.log(cache)
var hit = cache[str];
return hit || (cache[str] = fn(str))
})
}
let c_mathed = cached(function (str) {return mathed(str)});
c_mathed('1');
c_mathed('2');
c_mathed('1');
由此可见,相同数据请求只会被计算一次,第二次直接从缓存中读取;