在javascript中反弹实时搜索没有执行关闭

时间:2017-01-19 17:30:04

标签: javascript jquery debounce

下面的代码模拟通过debounce function执行实时搜索(替换为控制台输出)。

调用debounce函数,但传递的posts函数不是。我猜是因为liveSearch返回一个未执行的函数。

如何以实际去抖动的方式调用debounce

liveSearch

http://codepen.io/bbodien/pen/BpWBXm?editors=0010

1 个答案:

答案 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();
      }
    });
  }