简单的问题,
如何将其称为简单基本功能而不是window.resize
事件?
$( window ).resize( debouncer( function ( e ) {
// do stuff
$('body').append('<p>done</p>');
} ) );
在窗口调整大小时,我追加一个<p>
元素 - 然而,下面的debouncer函数似乎首先被调用去抖动窗口大小调整。
问题比这简单得多,如何将debouncer称为函数而不是在window.resize上调用它?这与回调有关吗?
E.g我想在我的代码中调用一个函数而不是在窗口调整大小。
我想我可以删除$( window ).resize
并将其替换为函数,例如var greet = function
,然后调用greet()
无效。
这看起来非常基本,但我不知道如何在debouncer
之间调用函数,如何调用它以及如何调用去抖代码。
在window.resize上调用的debouncer函数
(应该是无关紧要的,但无论如何我都包含它):
function debouncer( func , timeout ) {
var timeoutID , slice = Array.prototype.slice , timeout = timeout || 200;
return function () {
var scope = this , args = arguments;
clearTimeout( timeoutID );
timeoutID = setTimeout( function () {
func.apply( scope , slice.call( args ) );
} , timeout );
}
}
答案 0 :(得分:1)
你的debouncer函数返回功能。我认为你想要实现的是从代码中调用该函数。如果是这种情况,您可以执行以下操作:
var timeout = 100;
function debouncer_func( e ) {
// do stuff
$('body').append('<p>done</p>');
}
debouncer(debouncer_func, timeout)();
你也可以这样做:
debouncer(function(e){
// do stuff
$('body').append('<p>done</p>');
}, 100)();
基本上你的debouncer函数正在返回一个函数。因此debouncer(args)()
会从debouncer调用您返回的函数。