当某个事件(例如滚动等)发生在站点上时,事件侦听器函数将搜索并运行所有找到的对象,并使用异步函数来使每个函数产生淡入淡出效果。 当事件第二次发生时,系统应与每个对象同步先前仍在运行的异步函数,以停止它们并启动新的。
如果直到最后一个异步功能再次启用了侦听器功能之前发生了多个事件,则删除事件侦听器将具有最新状态的问题。
如何找到并停止以前运行的功能?
计时器:
function timer(ms) {
return new Promise(res => setTimeout(res, ms));
}
异步功能
async function setOpacity(elem, newOp)
{
// Set setOp to previous value
do{
await timer(time);
setOp = setOp + diff;
elem.style.opacity = setOp;
} while(setOp < newOp);
}
事件监听器:
function fadeimg()
{
fadeImg = document.getElementsByClassName("picture");
// Calc opacityToSet;
for (var i =0; i<fadeImg.length; i++)
{
var position = (fadeImg[i].offsetTop - scrolled);
setOpacity(fadeImg[i],opacityToSet);
} // for
}