これの専門用語が何なのかよくわかりません。インタラクティブなグラフィックを備えた GUI があります。ユーザーが GUI を操作した後、CPU を集中的に使用するアクションを実行する必要があります。ただし、ユーザー入力は非常に頻繁に行われるため、たとえば 1000 ミリ秒のユーザー入力がない場合にのみ関数を呼び出したいと考えています。私が使用するパターンの下:
scheduler = (function(){
var timer;
function exec(call, delay){
clearTimeout(timer);
timer = setTimeout(call, delay);
};
return exec;
})()
つまり、 の 3 つの呼び出しがscheduler
それぞれの直後に行われた場合、最後の呼び出しのみが実際に実行されます。
scheduler(function(){alert('foo')}, 1000);
scheduler(function(){alert('bar')}, 1000);
scheduler(function(){alert('zoo')}, 1000);
setTimeout
動作しているように見えますが、少しハッキリしているように感じます Javascript の警告、特にスコープの問題について少し心配です。これは、より大規模に使用できる信頼できるパターンのように思えますか? 私が渡すインライン関数scheduler
は、によって呼び出されたときに、通常どおりレキシカルスコープ内のすべてのオブジェクトを検索できるようになりますsettimeout
か? これらのスケジューラ インスタンスが複数ある場合はどうなりますか? それらは互いに干渉できますか?これを達成する別の方法はありますか?