我不太确定这是什么技术术语。我有一个带有交互式图形的 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);
它似乎有效,但感觉有点 hacky 我有点担心 Javascript 的任何警告setTimeout
,尤其是范围问题。这看起来像是我可以在更大范围内使用的可靠模式吗?当我调用它时,我传递的内联函数scheduler
是否能够像往常一样在其词法范围内查找所有对象settimeout
?如果我有几个这样的调度程序实例怎么办?他们能互相干扰吗?有没有另一种方法可以做到这一点?