wheel事件,doStg
会做一些动画,必须先完成动画,然后再执行其他操作:
document.addEventListener('wheel', doStg, false)
let numb = 0
function doStg() {
console.log(numb++)
}
仅在上一个doStg
完成后,才将doStg
添加到调用堆栈中。
我可以做这样的事情:
document.addEventListener('wheel', doStg, false)
let count = 0
let eventController = 0
function doStg() {
if (eventController === 0) {
console.log(count++)
eventController++
setTimeout(function() {
eventController = 0
}, 3000)
}
}
现在该功能仅每3秒触发一次。有没有更好的方法?
答案 0 :(得分:1)
如果先前的调用未完成,您可以使全局标志立即退出功能
document.addEventListener('wheel', doStg, false)
let isExecuting = false;
let numb = 0
function doStg() {
if(isExecuting) return; // exit if there is already executing something
isExecuting = true; // prevent next call
console.log(numb++)
// do something
isExecuting = false; // enable for next
}