我在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
?
答案 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>