|
1234567891011121314151617181920212223242526272829303132333435363738 |
- var simpleIsEqual = function simpleIsEqual(a, b) {
- return a === b;
- };
-
- function index (resultFn, isEqual) {
- if (isEqual === void 0) {
- isEqual = simpleIsEqual;
- }
-
- var lastThis;
- var lastArgs = [];
- var lastResult;
- var calledOnce = false;
-
- var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {
- return isEqual(newArg, lastArgs[index]);
- };
-
- var result = function result() {
- for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {
- newArgs[_key] = arguments[_key];
- }
-
- if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {
- return lastResult;
- }
-
- lastResult = resultFn.apply(this, newArgs);
- calledOnce = true;
- lastThis = this;
- lastArgs = newArgs;
- return lastResult;
- };
-
- return result;
- }
-
- export default index;
|