util.ts 659 B

12345678910111213141516171819202122232425262728293031
  1. // -防抖
  2. export function debounce(fn, wait) {
  3. let delay = wait || 500
  4. let timer
  5. return function() {
  6. let args = arguments;
  7. if (timer) {
  8. clearTimeout(timer)
  9. }
  10. let callNow = !timer
  11. timer = setTimeout(() => {
  12. timer = null
  13. }, delay)
  14. if (callNow) fn.apply(this, args)
  15. }
  16. }
  17. // -节流
  18. export function throttle(fn, wait) {
  19. let delay = wait || 500
  20. let timer = null
  21. return function() {
  22. if (timer) {
  23. return
  24. }
  25. timer = setTimeout(() => {
  26. fn.apply(this, arguments)
  27. timer = null
  28. }, delay)
  29. }
  30. }