javascript - 无法让这个简单的去抖动功能工作 - 我在这里错过了什么?
问题描述
一直试图让这个简单的去抖动工作一段时间,我在这里缺少一些东西:
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 的函数永远不会被调用,即使在超时之后也是如此。我错过了什么?
解决方案
debounce()
返回一个函数,但您从不调用此函数。只有当你调用这个函数时,setTimeout()
才会被执行。
推荐阅读
- audit.net - Audit.EntityFramework 是否可以忽略某些实体上的插入?
- java - 使用 CompletableFuture 构建具有多种方法的对象
- javascript - vue-cli上传服务器后,请求服务器图片路径多为/dist/
- bluetooth - 如何在斑马蓝牙打印机中借助 ZPL 在打印下一个作业之前回馈第一个可打印标签
- git - 如何在整个解决方案中使用 .gitignore
- spring-boot - HikariCP 连接未关闭
- spring-boot - spring boot如何控制jdbc连接?无法获取 jdbc 连接问题频繁出现
- excel - 谷歌表格的 Excel 中 VBA 的 Range.Value 等价物是什么?
- jquery - 在 Angular 中动态加载 html 控件
- reactjs - 如何使用 Gatsby 和 create-react-app 添加 react-native out-of-tree 平台?