cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
68 lines (59 loc) • 1.65 kB
JavaScript
;
/**
* @file memfn
* @author Cuttle Cong
* @date 2018/10/25
*
*/
function memoize(fn) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$once = _ref.once,
once = _ref$once === undefined ? false : _ref$once,
_ref$eq = _ref.eq,
eq = _ref$eq === undefined ? function (a, b) {
return a === b;
} : _ref$eq;
var map = new Map();
return function memoizeFn() {
var isContainsKey = false;
var containsKey = void 0;
var curKey = [].concat(Array.prototype.slice.call(arguments));
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = map.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var key = _step.value;
if (eq(key, curKey)) {
isContainsKey = true;
containsKey = key;
break;
}
}
// console.log(isContainsKey, curKey, map.size)
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (isContainsKey && containsKey) {
return map.get(containsKey);
}
if (once) {
map.clear();
}
var result = fn.apply(this, arguments);
map.set(curKey, result);
return result;
};
}
module.exports = memoize;