我不太确定这是什么技术术语。我有一个带有交互式图形的 GUI。用户与 GUI 交互后,我需要执行一些 CPU 密集型操作。但是,用户输入非常频繁,所以我只想在例如之后调用该函数。 1000 毫秒无用户输入。在我使用的模式下方:
scheduler = (function(){
var timer;
function exec(call, delay){
clearTimeout(timer);
timer = setTimeout(call, delay);
};
return exec;
})()
即如果对 scheduler
的 3 次调用是紧接着彼此完成的,那么实际上只会执行最后一个:
scheduler(function(){alert('foo')}, 1000);
scheduler(function(){alert('bar')}, 1000);
scheduler(function(){alert('zoo')}, 1000);
它似乎有效,但感觉有点老套 我有点担心 Javascript setTimeout
的任何注意事项,尤其是作用域问题。这看起来像是我可以在更大范围内使用的可靠模式吗?当 settimeout
调用时,我传递给 scheduler
的内联函数是否能够像往常一样查找其词法范围内的所有对象?如果我有几个这样的调度程序实例怎么办?他们会互相干扰吗?是否有其他方法可以实现此目的?
最佳答案
您可以选择使用网络工作线程:
https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers http://www.html5rocks.com/en/tutorials/workers/basics/
关于javascript - Javascript 中的组合延迟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997613/