【发布时间】:2018-08-29 13:11:53
【问题描述】:
调用_.debounce() 会导致函数在延迟后执行多次而不是一次。如何让_.debounce() 中的函数在指定延迟后执行一次?我的用例是在用户停止输入后执行 AJAX 请求。
例如,在输入中输入会导致 1 秒后控制台中出现一条消息。在我的示例中,您将看到出现多条消息(您键入的每个字母都有一条消息)。如何修改我的代码以只看到一条消息?
https://plnkr.co/edit/3dGm55ZFqWe4V59HLgoC
function onKeyUp() {
_.debounce(() => {
console.log('foo');
}, 1000)();
}
<input onkeyup="onKeyUp()" />
【问题讨论】:
-
你试过 _.throttle() 吗?
-
@Radioreve 我相信
_.throttle()与我想要的相反。我希望在用户完成输入后执行 AJAX 请求。我相信_.throttle()会让我在用户开始输入时执行 AJAX 请求,而不是在他们完成输入时。
标签: javascript underscore.js debounce