“需要帮助!”
测试4
编写一个函数f4,该函数接受一个回调函数cb作为参数并返回一个函数
不管它多久被调用,它最多每300毫秒调用一次cb。
示例:
●const f = f4(cb); f();
---○cb被立即调用一次。
-----说明:
-------■f4是第一次调用,因此cb尚未被调用
300毫秒,因此直接调用。
●const f = f4(cb); F(); [100毫秒后] f(); [200毫秒后] f();
---○cb直接调用一次,然后在300毫秒后调用一次。
-----说明:
------■f()的第一次调用直接调用cb
------■f()的第二次调用发生在300毫秒之前
因为cb的最后一次调用,所以它被忽略并且cb没有被调用。
------■f()的第三次调用发生在最后一次cb之后的300毫秒
已经被调用,所以cb又被调用了。
答案 0 :(得分:0)
您可以使用David Walsh编写的此反跳功能。
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);
另请参见: