1、防抖、节流

  1. // 截流与防抖
  2. /**
  3. * @desc 防抖
  4. * @param {number} delay 延迟时间
  5. * @param {func} cb 回调
  6. */
  7. export function debounce(delay,cb) {
  8. let timeoutID;
  9. function wrapper() {
  10. const self = this;
  11. const args = arguments;
  12. function exec() {
  13. cb.apply(self, args);
  14. }
  15. clearTimeout(timeoutID);
  16. timeoutID = setTimeout(exec, delay);
  17. }
  18. return wrapper;
  19. }


  1. /**
  2. * @desc 截流
  3. * @param {number} delay 延迟时间
  4. * @param {func} cb 回调
  5. */
  6. export function throttle(delay,cb){
  7. let timeoutID;
  8. let lastExec = 0;
  9. function wrapper() {
  10. const self = this;
  11. const args = arguments;
  12. const elapsed = Number(new Date()) - lastExec;
  13. function exec() {
  14. lastExec = Number(new Date());
  15. cb.apply(self, args);
  16. }
  17. clearTimeout(timeoutID);
  18. if (elapsed > delay) {
  19. exec();
  20. } else {
  21. timeoutID = setTimeout(exec, delay - elapsed);
  22. }
  23. }
  24. return wrapper;
  25. }