美甲小程序
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

49 rader
931 B

  1. /**
  2. * 函数防抖
  3. * @param fn
  4. * @param delay
  5. * @returns {Function}
  6. * @constructor
  7. */
  8. export const Debounce = (fn, t) => {
  9. let delay = t || 500;
  10. let timer;
  11. return function() {
  12. let args = arguments;
  13. if (timer) {
  14. clearTimeout(timer);
  15. }
  16. timer = setTimeout(() => {
  17. timer = null;
  18. fn.apply(this, args);
  19. }, delay);
  20. }
  21. };
  22. /**
  23. 1. 函数节流
  24. 2. @param fn
  25. 3. @param interval
  26. 4. @returns {Function}
  27. 5. @constructor
  28. */
  29. export const Throttle = (fn, t) => {
  30. let last;
  31. let timer;
  32. let interval = t || 500;
  33. return function() {
  34. let args = arguments;
  35. let now = +new Date();
  36. if (last && now - last < interval) {
  37. clearTimeout(timer);
  38. timer = setTimeout(() => {
  39. last = now;
  40. fn.apply(this, args);
  41. }, interval);
  42. } else {
  43. last = now;
  44. fn.apply(this, args);
  45. }
  46. }
  47. }