UNPKG

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