JavaScript 中的 debounce() 函数
本文将教你如何利用 JavaScript debounce()
函数来提高应用程序的性能。
理解 JavaScript 中的术语 Debounce
JavaScript 使用去抖动技术来提高浏览器性能。去抖动是节流阀的相对物,它们都提高了在线应用程序的性能。
然而,它们在许多情况下被观察到。当我们只考虑最终状态时,就会使用去抖动。
例如,他们会延迟对预先输入的搜索结果的检索,直到用户完成输入。如果我们想控制所有中间状态的速度,最理想的工具是油门。
在 JavaScript 中使用 debounce()
函数
这是一个代码说明,可帮助你了解如何对函数进行去抖动:
function debounce(jss, timeout = 3000) {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => {
jss.apply(this, args);
}, timeout);
};
}
function userInput() {
console.log('Changing data');
}
const workonChange = debounce(() => userInput());
运行代码
那么,这里发生了什么?debounce()
是一个独特的函数,它执行两个功能:
- 为计时器变量分配范围
- 设置你的函数在特定时间运行
让我们看一下第一个带有文本输入的用例,看看它是如何工作的。
当访问者写下第一个字母并释放键(定时器)时,debounce()
函数最初使用 clearTimeout
重置定时器。此时不需要该步骤,因为没有任何计划。
函数 userInput()
预计将在 3000 毫秒(3 秒)内被调用。但是,如果访问者继续键入,每个基本版本都会重新触发 debounce()
函数。
每次调用都必须重置计时器,或者换句话说,取消任何早期的 userInput()
准备并重新安排它到一个新的时间——未来 3000 毫秒。只要访问者在 3000 毫秒内保持击键,这种情况就会继续。
因为之前的计划不会被清除,userInput()
将被调用。
输出:
你会看到当你输入 s
、h
、i
或 v
时 setTimeout
方法会一直延迟(尽管调用了 userInput
函数)。当我们在打字时暂停三秒钟时,会打印出主要功能:Changing data
。
去抖动通过仅在设定的暂停时间后调用函数而不是在每次操作时调用函数来提高应用程序速度。但是,你不必自己完成此操作。
例如,Lodash 中提供了一个 debounce
功能。贡献者改进了 Lodash 等库,以改进 debounce
功能。
在本文中,我们已经讨论了什么是去抖动、它为什么有用以及如何在 JavaScript 中实现它。
相关文章
在 JavaScript 中隐藏表格行
发布时间:2024/03/18 浏览次数:184 分类:JavaScript
-
JavaScript 不一定有任何可以直接隐藏表格内容的预定义函数。更准确地说,有 jQuery 的 toggle() 函数和 hide()、show() 函数,它们依次执行以按下行并展开它们。
JavaScript 表格滚动
发布时间:2024/03/18 浏览次数:139 分类:JavaScript
-
要在网页中滚动表格内容,我们可以依赖一些 JavaScript 属性来依次执行任务。overflow、overflowX 和 overflowY 的使用使表格可滚动且可访问。
用 JavaScript 检查按钮是否被点击
发布时间:2024/03/18 浏览次数:147 分类:JavaScript
-
使用 JavaScript 检查按钮是否被点击可以通过三种方法进行。在 HTML 中添加 onclick 属性,将脚本标签中的 onclick 初始化为方法,使用 EventListener 可能是更好的方法。
JavaScript 更改按钮文本
发布时间:2024/03/18 浏览次数:128 分类:JavaScript
-
本教程展示了如何使用 JavaScript 更改按钮文本,并演示了使用 jQuery 更改按钮文本。