如何更改全局变量内部称为debounce函数。这是什么意思 - 有人可以解释" debounce"。JavaScript中的功能
function debounce(func, wait) {
var timeout;
return function () {
var content = this, args = arguments;
var later = function() {
timeout = null;
func.apply(content, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
var MANIPULATEDWPAGE = false;
function manipulatedwpage() {
if (!MANIPULATEDWPAGE) {
//MY CODE
MANIPULATEDWPAGE = true; //only ones during debounce process
}
}
window.addEventListener('resize', manipulatedwpage());
window.addEventListener('scroll', manipulatedwpage());
function calldeb() {
//code after debounce done
MANIPULATEDWPAGE = false;
// <--- PROBLEM --- MANIPULATEDWPAGE is not changed
}
var debvar = debounce(calldeb, 2000);
window.addEventListener('resize', debvar);
window.addEventListener('scroll', debvar);
这是您的代码正在运行的操作,简化为无控制流语句的操作:
var MANIPULATEDWPAGE = false; // initial declaration
MANIPULATEDWPAGE = true; // run from function manipulatedwpage()
MANIPULATEDWPAGE = false; // run from debvar
您在resize
和scroll
事件上都有两个处理程序。其中一个将您的全局设置为True,然后另一个将其设置为true,并立即将其设置为false,使其看起来与原始状态没有变化。