【发布时间】:2023-03-05 15:10:01
【问题描述】:
我正在尝试解释我的问题,以了解解决问题的更好方法。我搜索了一下,但我不知道如何准确搜索:
- 我有一个包含三个区域的 HTML 页面:面板 A、网格 B 和网格 C。
- 在网格 C 上,我可以对一行执行操作(仅单击它),以更新面板 A 和网格 B 上的一些计数器,但它们是根据数据库总数计算的。
- 当我执行行操作时,我会立即更新行并触发面板 A 和网格 B 监听的事件,该事件向服务器发送两个请求以更新其计数器。
每行更新都有点繁重,如果用户快速点击不同的行,javascript 执行会被锁定,面板 A 和网格 B 的更新会淹没服务器,如果在 1 或 2 秒内可能会延迟执行一次事件未触发。
我会解决 listenTo 回调的问题,因为它可能是另一个面板,必须“立即”执行事件操作。
我想象这样的事情(仅在没有监听事件 2 秒后刷新),但我认为必须有更好的方法:
var eventTimeout = {}; // one for listener
element.bind('eventName' function() {
if (eventTimeout['eventName']) {
clearTimeout(eventTimeout['eventName']); // I understand that if the timeout has been exhausted no error is thrown
}
eventTimeout['eventName'] =
setTimeout(function() {
eventTimeout['eventName'] = null;
doAction();
}, 2000);
});
我将离开那个实现(我还没有测试过),当我有更多时间时,我会把它放在一个 JSFiddle 上以帮助理解。
【问题讨论】:
标签: javascript jquery events