入力中にこれに対する答えを見つけましたが、誰かの助けになる場合に備えて、まだ投稿すると思いました
誰もこれを再現できないと確信していますが、一体何なのですか。:)
ユーザー入力の後に 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