带有时间javascript的回调函数

带有时间javascript的回调函数,javascript,Javascript,“需要帮助!!” 测试4 编写一个函数f4,它接受回调函数cb作为参数并返回一个函数 无论调用频率如何,它最多每300毫秒调用一次cb。 示例: ● 常数f=f4(cb);f() ---○ cb被无延迟地调用一次。 -----说明: -------■ f4是第一次调用的,所以cb在最后一次中还没有被调用 300毫秒,因此直接调用。 ● 常数f=f4(cb);f();[100毫秒后]f();[200毫秒后]f() ---○ cb直接调用一次,然后在300毫秒后调用一次。 -----说明: ----

“需要帮助!!”
测试4
编写一个函数f4,它接受回调函数cb作为参数并返回一个函数 无论调用频率如何,它最多每300毫秒调用一次cb。
示例:
● 常数f=f4(cb);f()
---○ cb被无延迟地调用一次。
-----说明:
-------■ f4是第一次调用的,所以cb在最后一次中还没有被调用 300毫秒,因此直接调用。

● 常数f=f4(cb);f();[100毫秒后]f();[200毫秒后]f()
---○ cb直接调用一次,然后在300毫秒后调用一次。
-----说明:
------■ f()的第一个调用直接调用cb
------■ 第二次调用f()发生在300毫秒之前 因为上次调用cb,所以它被忽略,而cb未被调用。
------■ f()的第三次调用发生在最后一次调用后300毫秒
已被调用,因此将再次调用cb。

您可以使用David Walsh编写的此debounce函数

function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};
要使函数仅每300毫秒调用一次,可以执行以下操作:

var fn = debounce(function(){
  //can only be called once every 300 ms
}, 300);
另请参见:


欢迎来到Stackoverflow!请记住,你是在向真实的人寻求帮助,重要的是要确保你花时间帮助他们,这样人们才能理解你在问什么,你已经有了什么代码,以及你已经尝试解决了什么问题。现在,你的问题非常难理解,而且很可能会因为不清楚而被否决甚至被关闭。这似乎不会在第一次调用函数。@BassemJadoui没问题。如果它解决了您的问题,请接受我的回答。如果您了解springboot和hibernate,请在这里@MarkMeyer帮助我如果立即参数为
true
,则第一次将立即调用它,即
var fn=debounce(function(){},300,true)