防抖(debounce)

函数防抖是指当一个函数在短时间内频繁调用时,让函数延迟一段时间后执行一次。例如,当用户频繁点击按钮时,不需要每次点击都响应事件,这样非常消耗性能,这时我们可以设置函数防抖。下面让我们实现防抖函数:

  1. // 防抖动函数
  2. function debounce(fn,wait=50,immediate) {
  3. let timer;
  4. return function() {
  5. if(immediate) {
  6. fn.apply(this,arguments)
  7. }
  8. if(timer) clearTimeout(timer)
  9. timer = setTimeout(()=> {
  10. fn.apply(this,arguments)
  11. },wait)
  12. }
  13. }

节流(throttle)

节流是指在规定的时间内执行固定次数代码。

  1. //节流函数
  2. function throttle(fn, wait) {
  3. let prev = new Date();
  4. return function() {
  5. const args = arguments;
  6. const now = new Date();
  7. if (now - prev > wait) {
  8. fn.apply(this, args);
  9. prev = new Date();
  10. }
  11. }