Jen*_*ell 5 javascript delay settimeout debouncing
我有一个简单的输入框。当我写东西的时候,我希望它能被推迟。我遇到的问题是在非常快地写入字符时出现延迟后,它会多次调用 console.log 。
我打字a并等待。然后我b c d快速打字并等待。然后e f快速等待。它赶上了我不想要的。我希望它收集我输入的内容,但在延迟完成之前不输出它。
a
.
.
.
b c d
b c d
b c d
.
.
.
e f
e f
Run Code Online (Sandbox Code Playgroud)
a
.
.
.
b c d
.
.
.
e f
Run Code Online (Sandbox Code Playgroud)
a
.
.
.
b c d
b c d
b c d
.
.
.
e f
e f
Run Code Online (Sandbox Code Playgroud)
a
.
.
.
b c d
.
.
.
e f
Run Code Online (Sandbox Code Playgroud)
您的预期行为看起来像debounce。
在我看来,你应该clearTimeout在创建新的之前。
var searchtimer;
window.addEventListener("DOMContentLoaded", () => {
document.querySelector("#search").addEventListener("input", (e) => {
clearTimeout(searchtimer); // <--- The solution is here
searchtimer = setTimeout(() => {
console.log(e.target.value);
}, 1000);
});
});Run Code Online (Sandbox Code Playgroud)
<input id="search" type="text">Run Code Online (Sandbox Code Playgroud)
clearTimeout(searchtimer);阅读文章“RxJS 中的throttleTime vs debounceTime”以详细了解。
| 归档时间: |
|
| 查看次数: |
2416 次 |
| 最近记录: |