Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

39 wiersze
896 B

  1. var simpleIsEqual = function simpleIsEqual(a, b) {
  2. return a === b;
  3. };
  4. function index (resultFn, isEqual) {
  5. if (isEqual === void 0) {
  6. isEqual = simpleIsEqual;
  7. }
  8. var lastThis;
  9. var lastArgs = [];
  10. var lastResult;
  11. var calledOnce = false;
  12. var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {
  13. return isEqual(newArg, lastArgs[index]);
  14. };
  15. var result = function result() {
  16. for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {
  17. newArgs[_key] = arguments[_key];
  18. }
  19. if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {
  20. return lastResult;
  21. }
  22. lastResult = resultFn.apply(this, newArgs);
  23. calledOnce = true;
  24. lastThis = this;
  25. lastArgs = newArgs;
  26. return lastResult;
  27. };
  28. return result;
  29. }
  30. export default index;