js—记忆函数 memoize

280 阅读1分钟

应用场景: 在切换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中,可直接拿到缓存中的值。

如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力! 最后:写作不易,如要转裁,请标明转载出处。