UNPKG

zent

Version:

一套前端设计语言和基于React的实现

32 lines (31 loc) 971 B
var shallowEqual = function (newValue, oldValue) { return newValue === oldValue; }; var simpleIsEqual = function (newArgs, lastArgs) { return newArgs.length === lastArgs.length && newArgs.every(function (newArg, index) { return shallowEqual(newArg, lastArgs[index]); }); }; export default function (resultFn, isEqual) { if (isEqual === void 0) { isEqual = simpleIsEqual; } var lastThis; var lastArgs = []; var lastResult; var calledOnce = false; var result = function () { var newArgs = []; for (var _i = 0; _i < arguments.length; _i++) { newArgs[_i] = arguments[_i]; } if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) { return lastResult; } lastResult = resultFn.apply(this, newArgs); calledOnce = true; lastThis = this; lastArgs = newArgs; return lastResult; }; return result; }