带有时间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)代码>。