移除防抖回调函数

4

我在 React store 中有以下代码:

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

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

我不相信removeChangeListener因为_.debounce函数而删除了cb。如何使用_.debounce并确保正确地删除cb

1个回答

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不会混淆。


谢谢,最后将debouncedCB哈希为cb - sir_thursday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接