我在打字时找到了答案,以为我仍然会发布它以防万一它对某人有所帮助
我敢肯定没有人能够重现这一点,但到底是什么。:)
我们有一个页面会在一些用户输入后触发 AJAX 调用。在一些用户输入之后,我们使用 setTimeout 稍等片刻,以避免在用户完成输入之前调用 AJAX 方法。没有什么花哨。但是每隔一段时间 setTimeout 就会拒绝触发。
代码基本上如下所示:
var c = -1;
function userInput(input)
{
clearTimeout(c);
c = setTimeout(function(){load(input);}, 100);
}
function load(input)
{
console.log("load: " + input);
// ajax stuff.
}
就像我说的,这通常工作得很好。但是当它停止工作时,“问题”似乎是对 variable 的赋值c
。
这是来自 IE 调试控制台的片段。如果我将结果分配给setTimeout
to c
,则不会触发。如果我将结果分配给其他东西,或者根本不分配它,它工作正常。
>> c = setTimeout("load('test');", 100);
303789
>> setTimeout(function(){load('test');}, 100);
311016
LOG: load: test
>> clearTimeout(c)
>> c = setTimeout(function(){load('test');}, 100);
342177
>> testtesttest = setTimeout(function(){load('test');}, 100);
346296
LOG: load: test