点击时多次调用
jQuery("#elementid").click( _.debounce( somefunction , 1000 ) );
调用_.debounce时多次点击之间如何共享超时?
_.debounce = function(func, wait, immediate) {
var result;
var timeout = null;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) result = func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) result = func.apply(context, args);
return result;
};
};
答案 0 :(得分:0)
_.debounce = function(func, wait, immediate) {
var result;
var timeout = null;
return function() { /*returned function
*/
} }
注意在返回函数之外声明超时和结果变量的位置。返回的函数会记住定义它的上下文,它被称为闭包。
http://en.wikipedia.org/wiki/Closure_(computer_programming)
因此每次返回的函数调用超时时,它都将是闭包中声明的超时。