【发布时间】:2019-03-08 19:28:53
【问题描述】:
我的代码:
let isBlack = true;
function animate() {
$(".someDiv").animate({
backgroundColor: isBlack ? "transparent" : 'black'
}, 20);
isBlack = !isBlack;
}
const delay = ms => new Promise(res => setTimeout(res, ms));
async function animateAndWait(msArr) {
for (let i = 0; i < msArr.length; i++) {
animate();
await delay(msArr[i]);
}
}
flashFunction();
async function flashFunction() {
await animateAndWait([300, 50]);
if (myRandomNumberBetween(1, 100) <= 10) {
return delay(3000)
.then(flashFunction);
}
await animateAndWait([300, 400]);
delay(3000)
.then(flashFunction);
}
它使 div 以约 3 秒的间隔闪烁几次。 当我切换标签时出现我的问题。当我在另一个选项卡上时,该浏览器会暂停计时器,然后,当我返回此选项卡时,它会闪烁(快速)在后台丢失的所有闪烁。
我想在后台以某种方式暂停计时器或清除间隔。有些人问过同样的问题,但我无法在此处包含对他们有帮助的答案。或者也许我只是不知道怎么做。这可能超出我的想象,但如果有人有时间,我会很感激他们的帮助。
这里有一些来自有类似问题的人的链接:
【问题讨论】:
标签: javascript animation async-await settimeout