Jer*_*oen 6 javascript jquery javascript-events settimeout node.js
我不太清楚这个技术术语是什么.我有一个带有交互式图形的GUI.用户与GUI交互后,我需要执行一些CPU密集型操作.但是,用户输入非常频繁,所以我只想在没有用户输入的1000ms之后调用该函数.在我使用的模式下面:
scheduler = (function(){
var timer;
function exec(call, delay){
clearTimeout(timer);
timer = setTimeout(call, delay);
};
return exec;
})()
Run Code Online (Sandbox Code Playgroud)
即如果3次调用scheduler是在彼此之后完成的,那么实际上只会执行最后一次调用:
scheduler(function(){alert('foo')}, 1000);
scheduler(function(){alert('bar')}, 1000);
scheduler(function(){alert('zoo')}, 1000);
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但感觉有点hacky我有点担心Javascript的任何警告setTimeout,尤其是范围问题.这看起来像我可以在更大范围内使用的可靠模式吗?我传递的内联函数scheduler是否能像往常一样在其词法范围内查找所有对象settimeout?如果我有几个这样的调度程序实例呢?他们会互相干扰吗?有没有其他方法来实现这一目标?