javascript - Javascript 中的组合延迟函数调用

标签 javascript jquery node.js dom-events settimeout

我不太确定这是什么技术术语。我有一个带有交互式图形的 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 的内联函数是否能够像往常一样查找其词法范围内的所有对象?如果我有几个这样的调度程序实例怎么办?他们会互相干扰吗?是否有其他方法可以实现此目的?

最佳答案

关于javascript - Javascript 中的组合延迟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997613/

相关文章:

javascript - Dojo lang.replace - 如何提供默认值,而不是 'undefined' ?

javascript - 在D3中只选择一个json对象

javascript - 在 InDesign 中将 XML 元素链接到页面项目

javascript - Bootstrap 3崩溃改变Active状态

jQuery 滚动到页面底部

javascript - 使用 JQuery 更改下拉菜单的选定选项

javascript - 大量同时连接

javascript - 如何使用 JEST 测试 fetch API 类?

javascript - 如何删除mongodb数组中的逗号

node.js - 在 Azure 网站上的 Node.js 服务器中强制执行 HTTPS 请求