我的回答

防抖

消除多次频繁触发的影响, 连续触发, 在某个时间段内只会给出一个返回结果

  1. function debounce(fn, delay) {
  2. let timer = null
  3. return () => {
  4. if (timer) {
  5. clearTimeout(timer)
  6. }
  7. timer = setTimeout(fn, delay)
  8. }
  9. }

节流

频繁触发, 一段时间内不允许再次触发, 只能等待时间过去后, 才能再次触发

  1. function throttle(fn, delay) {
  2. let valid = true
  3. return () => {
  4. if (!valid) {
  5. return false
  6. }
  7. valid = false
  8. setTimeout(() => {
  9. fn()
  10. valid = true
  11. }, delay)
  12. }
  13. }

参考答案