首页 > 解决方案 > 无法让这个简单的去抖动功能工作 - 我在这里错过了什么?

问题描述

一直试图让这个简单的去抖动工作一段时间,我在这里缺少一些东西:

function debounce(callback, wait) {
  let timeout;
  return (...args) => {
    const context = this;
    clearTimeout(timeout);
    timeout = setTimeout(() => callback.apply(context, args), wait);
  };
}

function debounceb1() {
  console.log('debounceb1 called')
  debounce(() => {
    console.log('debounce b1 executed?')
  }, 2000)

}

function debounceb2() {
  console.log('debounceb2 called')
  debounce(function() {
    console.log('debounce b2 executed?')
  }, 2000)
}
<button onClick="debounceb1()">
button 1
</button>

<button onClick="debounceb2()">
button 2
</button>

正如您在代码段中看到的,传递给 debounce 的函数永远不会被调用,即使在超时之后也是如此。我错过了什么?

标签: javascript

解决方案


debounce()返回一个函数,但您从不调用此函数。只有当你调用这个函数时,setTimeout()才会被执行。


推荐阅读