Lodash - memoize 方法
语法
_.memoize(func, [resolver])
创建一个函数来记忆 func 的结果。如果提供了 resolver,它会根据提供给记忆函数的参数确定用于存储结果的缓存键。默认情况下,提供给记忆函数的第一个参数用作映射缓存键。使用记忆函数的 this 绑定调用 func。
参数
func (函数) − 将其输出记忆化的函数。
[resolver] (函数) −解析缓存键的函数。
输出
(Function) − 返回新的记忆化函数。
示例
var _ = require('lodash'); var fibonacci = _.memoize(function(n) { return n < 2 ? n: fibonacci(n - 1) + fibonacci(n - 2); }); var fibonacci1 = function(n) { return n < 2 ? n: fibonacci1(n - 1) + fibonacci1(n - 2); }; var startTimestamp = new Date().getTime(); var result = fibonacci(1000); var endTimestamp = new Date().getTime(); console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms'); startTimestamp = new Date().getTime(); result = fibonacci1(30); endTimestamp = new Date().getTime(); console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms');
将上述程序保存在tester.js中。运行以下命令执行该程序。
命令
\>node tester.js
输出
4.346655768693743e+208 in 3 ms 832040 in 551 ms