删除去抖动回调

时间:2016-01-16 17:56:23

标签: javascript reactjs

我在React商店中有以下代码:

  addChangeListener(cb) {
    this.on(CHANGE_EVENT, _.debounce(cb, 100));
  }

  removeChangeListener(cb) {
    _.debounce(cb).cancel();
    this.removeListener(CHANGE_EVENT, cb);
  }

由于removeChangeListener功能,我不相信cb正在删除_.debounce。如何使用_.debounce,并确保删除正确的cb

1 个答案:

答案 0 :(得分:5)

你是对的。 _.debounce创建一个新功能。所以你需要做一些事情:

var debouncedCb;

addChangeListener(cb) {
  debouncedCb = _.debounce(cb, 100)
  this.on(CHANGE_EVENT, debouncedCb);
}

removeChangeListener(cb) {
  this.removeListener(CHANGE_EVENT, debouncedCb);
  _.debounce(cb).cancel();
}

根据您的具体情况,您可能希望以某种方式将debouncedCb附加到cb,以便removeChangeListener不会混淆。< / p>

相关问题