js—记忆函数 memoize
2021-09-14 本文已影响0人
一名有马甲线的程序媛
应用场景:
在切换select下拉框进行接口请求搜索的时候,如果频繁切换会给后台造成很大的压力,所以需要前端用记忆函数
来存储已经搜索过的项目。
例如,有a b c d四个选项,已经以a为条件进行数据请求,再次切换到a可以不必再向后台发送重复请求,直接从前端缓存中读取更为方便,即有了记忆函数。
// 示例函数
function demoFun (x) {
console.log(x);
return x*2021;
}
// 记忆函数
function memoize (f) {
let obj = {};
return function () {
let key = JSON.stringify(arguments); // arguments伪数组
obj[key] = obj[key] || f.apply(f, arguments);
return obj[key];
}
}
let temp = memoize(demoFun);
console.log(temp(1));
console.log(temp(1));
console.log(temp(2));
// 打印结果如下:
// 1
// 2021
// 2021
// 2
// 4042
由此可见,temp(1)已经请求过一次了,再次触发不会再走到demoFun
中,可直接拿到缓存中的值。
如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力!
最后:写作不易,如要转裁,请标明转载出处。