0
从resize
上的Mozilla site,我不明白如何resizeTimeout
是null
setTimeout
功能内的下面的示例。这有什么用途?通过声明var resizeTimeout;
然后将其设置为null
,条件(!resizeTimeout)
将为真,那么将其设置为null
有什么区别?setTimeOut如何与resize事件侦听器一起使用?
(function() {
window.addEventListener("resize", resizeThrottler, false);
var resizeTimeout;
function resizeThrottler() {
// ignore resize events as long as an actualResizeHandler execution is in the queue
if (!resizeTimeout) {
resizeTimeout = setTimeout(function() {
resizeTimeout = null;
actualResizeHandler();
// The actualResizeHandler will execute at a rate of 15fps
}, 66);
}
}
function actualResizeHandler() {
// handle the resize event
...
}
}());
效果是'resizeTimeout'开头为空,在第一次调整大小事件后,它得到一个值并启动一个计时器,并且当它具有该值时,将忽略任何未来的调整大小事件。然后当定时器完成时,调用'actual'处理程序并且'resizeTimeout'返回null,所以下一个resize事件将再次启动定时器。 –