index.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // @ts-nocheck
  2. /**
  3. * 节流函数,用于限制函数的调用频率
  4. * @param fn 要进行节流的函数
  5. * @param delay 两次调用之间的最小间隔时间
  6. * @returns 节流后的函数
  7. */
  8. export function throttle(fn: (...args: any[]) => void, delay: number) {
  9. let flag = true; // 标记是否可以执行函数
  10. return (...args: any[]) => {
  11. if (flag) {
  12. flag = false; // 设置为不可执行状态
  13. fn(...args); // 执行传入的函数
  14. setTimeout(() => {
  15. flag = true; // 经过指定时间后,设置为可执行状态
  16. }, delay);
  17. }
  18. };
  19. }
  20. // // 示例
  21. // // 定义一个被节流的函数
  22. // function handleScroll() {
  23. // console.log("Scroll event handled!");
  24. // }
  25. // // 使用节流函数对 handleScroll 进行节流,间隔时间为 500 毫秒
  26. // const throttledScroll = throttle(handleScroll, 500);
  27. // // 模拟多次调用 handleScroll
  28. // throttledScroll(); // 输出 "Scroll event handled!"
  29. // throttledScroll(); // 不会输出
  30. // throttledScroll(); // 不会输出
  31. // // 经过 500 毫秒后,再次调用 handleScroll
  32. // setTimeout(() => {
  33. // throttledScroll(); // 输出 "Scroll event handled!"
  34. // }, 500);