【发布时间】:2011-07-22 04:52:45
【问题描述】:
我找到了以下用于实现超时的 JavaScript 代码(可能在 Stack Overflow 上?):
var delay = (function() {
var timer = 0;
return function(callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
我是 JavaScript 新手,所以我仍在尝试围绕闭包。如果我在一个地方调用delay(firstCallback, 200),然后立即调用delay(secondCallback, 200),则第一个超时回调被清除,而第二个回调成功执行。
如何在不同的实例中重复使用delay 而不会覆盖其他实例? (不确定这些术语是否正确,但希望它能理解我的意思。)因此,在上面的示例中,我希望两个回调都执行。
感谢您的帮助!
编辑:作为一个实际示例,我正在尝试在输入字段上缓冲按键事件,以便仅在 200 毫秒内未按下任何键后执行回调。但是我有多个输入字段,目前当两个输入字段快速连续发生按键事件时,缓冲区会中断。
【问题讨论】:
标签: javascript timeout closures settimeout