简介
memoizee-2是一个npm包,它可以缓存函数的返回值,避免重复计算。当函数的参数相同时,返回的结果将会从缓存中读取。这个包的好处在于可以提高函数的执行效率。本文将会介绍如何使用memoizee-2这个包以及其使用的一些技术点。
安装
可以使用npm进行安装。
npm install memoizee-2
使用
引入memoizee-2
const memoize = require('memoizee-2');
定义一个函数,使用memoize封装该函数。
var sum = memoize((a, b) => { console.log('calculating...'); return a + b; });
被封装的函数可以使用memoize的方式来调用。
sum(2, 3); sum(2, 3);
第一次调用时,由于缓存没有结果,需要计算并输出"calculating...";第二次调用时,从缓存中直接输出结果。
可选参数
memoize还支持一些可选参数,可以对缓存做出预设配置。
maxAge
缓存最大存在时间。
-- -------------------- ---- ------- --- --- - ----------- -- -- - ------------------------------ ------ - - -- -- - ------- ----- --- ------ --- ------------- -- - ------ --- -- ------- ------------- -- - ------ --- -- -------
第一次调用时,由于缓存不存在,需要计算并输出"calculating...";第二次调用时,直接从缓存中输出结果。第三次调用时,缓存已经过期,需要重新计算并输出"calculating..."。
promise
如果原函数返回的是Promise,则需要设置promise为true。
-- -------------------- ---- ------- --- -------- - ------------- --- -- -- - ------------------------------ ------ - - -- -- - -------- ---- --- ----------- ---------------- -- - -------------------- --- ----------- ---------------- -- - -------------------- ---
第一次调用时,由于缓存不存在,需要计算并输出"calculating...";第二次调用时,从缓存中直接输出结果。
primitive
如果原函数的参数为非对象,需要将primitive设置为true。
var join = memoize((array, separator) => { console.log('calculating...'); return array.join(separator); }, { primitive: true }); join([1, 2, 3], '-'); join([1, 2, 3], '-');
第一次调用时,由于缓存不存在,需要计算并输出"calculating...";第二次调用时,从缓存中直接输出结果。
总结
memoizee-2提供了一种简单有效的方式来避免函数的重复计算。使用memoizee-2, 可以提高函数的执行效率。同时,memoizee-2对于缓存的处理也提供了一些可选参数,可以根据具体的需求进行定制化的配置。这个包的使用非常简单,任何人都可以轻松上手。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055b8081e8991b448d9120