javascript - Ember:在滚动事件侦听器上多次调用 debounce
问题描述
我在滚动事件侦听器中添加了一个 debounce 方法。像这样的东西。
$group.on("scroll.topFix",() => {
console.log('scroll event');
debounce(this, ()=> {
console.log('debounce called);
},1000);
});
当我在$group
debounce 上做滚动时,滚动事件的调用次数也相同。我不知道这件事的漏洞在哪里。
例如,如果打印了 5 次滚动事件,则debounce 调用也称为5 次。
解决方案
您的问题是您将匿名函数传递给debounce
:
debounce(this, ()=> {
console.log('debounce called);
},1000);
这是有问题的,因为您每次都无法debounce
重新创建此功能!所以你永远不会debounce
用同一个函数调用两次,这对于它做任何不同于 a 的事情是必要的setTimeout
。
所以你应该创建/保存这个函数到某个地方,然后像这样调用它
debounce(this, this.doSomething, 1000);
确保你总是传递完全相同的函数。仅仅因为 2 个函数做同样的事情并不意味着它是相同的函数实例。
推荐阅读
- mysql - MySQL:根据另一个表更新正在运行的“帐户余额”
- python - TypeError:需要一个类似字节的对象,而不是 Python 中 Image 命令的“str”
- angular - 如何使垫表行拖放与 cdkDragHandle 一起使用,以便只能使用句柄拖动行?
- docker - Docker 文件夹权限 - Tar 错误 - 权限错误
- angularjs - Ionic v3 polyfill.js 未捕获的承诺错误
- wordpress - 在 Wordpress 中安装 Google 标记管理器(无需编写 PHP 主题)
- c++ - 模板具有默认参数时省略尖括号
- python - 有人可以解释一下使用 matplotlib 创建雷达图的代码吗
- python - TKinter 中带有多个小部件的滚动条
- angular - 带有signalR的角度:多个集线器连接到同一条路线