下面的代码模拟通过debounce function执行实时搜索(替换为控制台输出)。
调用debounce函数,但传递的posts
函数不是。我猜是因为liveSearch
返回一个未执行的函数。
如何以实际去抖动的方式调用debounce
?
liveSearch
答案 0 :(得分:1)
debounce
的每次调用都会使用timer
变量创建自己的闭包。因此,debounce
函数被设计为被调用一次并返回一个应该被调用而不是liveSearch
的函数:
function init() {
var debouncedLiveSearch = debounce(liveSearch, searchDelay);
$search.on('keyup', function(e) {
if (keysToIgnore.indexOf(e.keyCode) == -1) {
debouncedLiveSearch();
}
});
}