UNPKG

1.03 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var is_function_1 = require("./is-function");
4/**
5 * _.memoize(calColor);
6 * _.memoize(calColor, (...args) => args[0]);
7 * @param f
8 * @param resolver
9 */
10exports.default = (function (f, resolver) {
11 if (!is_function_1.default(f)) {
12 throw new TypeError('Expected a function');
13 }
14 var memoized = function () {
15 var args = [];
16 for (var _i = 0; _i < arguments.length; _i++) {
17 args[_i] = arguments[_i];
18 }
19 // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key
20 var key = resolver ? resolver.apply(this, args) : args[0];
21 var cache = memoized.cache;
22 if (cache.has(key)) {
23 return cache.get(key);
24 }
25 var result = f.apply(this, args);
26 // 缓存起来
27 cache.set(key, result);
28 return result;
29 };
30 memoized.cache = new Map();
31 return memoized;
32});
33//# sourceMappingURL=memoize.js.map
\No newline at end of file