首页 > 解决方案 > 按键后重置 lodash 去抖动

问题描述

在我的 javascript 应用程序中,我在输入值更改时触发该函数。我想用 lodash 函数推迟 ajax 调用debounce。问题是该功能仅适用于第一次按键。例如,从我在输入中写的第一个字母开始 1 秒后,我盯着打字和函数调用 ajax。我想推迟每次按键的调用,但是当我在 1 秒后输入时,每次都会触发函数。你能告诉我如何解决吗?谢谢。

<custom-select :on-search="onChange"></custom-select>

function onChange (text) {
   _.debounce(function () {
      // do ajax call
   }, 1000);
}

标签: javascriptlodash

解决方案


您应该使用相同的“debouncer”,而不是debounce每次更改都使用新功能:

const bounceIt = _.debounce(function () {
  console.log("pressed");
}, 1000);

document.getElementById("text").addEventListener("keydown", function() {
	bounceIt();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
<input id="text" type="text"/>


推荐阅读