throttle.js 546 B

12345678910111213141516171819202122
  1. // 节流函数
  2. let timer;
  3. let flag;
  4. export const throttle = (func, wait = 500, immediate = true) => {
  5. if (immediate) {
  6. if (!flag) {
  7. flag = true
  8. // 如果是立即执行,则在wait毫秒内开始时执行
  9. typeof func === 'function' && func()
  10. timer = setTimeout(() => {
  11. flag = false
  12. }, wait)
  13. }
  14. } else if (!flag) {
  15. flag = true
  16. // 如果是非立即执行,则在wait毫秒内的结束处执行
  17. timer = setTimeout(() => {
  18. flag = false
  19. typeof func === 'function' && func()
  20. }, wait)
  21. }
  22. }