Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

41 lignes
913 B

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