繁体   English   中英

防止 if 语句在已经运行时运行(Vanilla JS)

[英]Prevent if statement from running while already running (Vanilla JS)

我有一个看起来像这样的if语句:

if( extra.RewardId === "idnumberhere") {
        egg.classList.add("bounce");
        setTimeout (() => {
            egg.classList.remove("bounce");
            petEffects.innerText = `Working`;
            petEffects.classList.add("typing");
        }, 3000);
        setTimeout (() => {
            petEffects.innerText = ``;
            petEffects.classList.remove("typing");
        }, 5000);
}

它比这长一点,但主要问题是如果我第二次触发if语句,它会中断自己,太快了。

go 如何让第二个实例等到第一个if语句完全运行,并且在下一个实例开始之前通过这 5000 毫秒?

编辑

https://jsfiddle.net/d2jhmec1/2/

我已经安全地分享了 JSfiddle。 单击该按钮将显示我当前正在使用的内容。 单击两次时,它会中断。

您应该能够设置一个 Boolean 标志,它会告诉您是否运行代码。

像这样的东西:

let canAddBounce = true;
let canRemoveBounce = true;

if(extra.RewardId === "idnumberhere") {
    if (canAddBounce) {
        canAddBounce = false;
        egg.classList.add("bounce");
        setTimeout (() => {
            egg.classList.remove("bounce");
            petEffects.innerText = `Working`;
            petEffects.classList.add("typing");
            canAddBounce = true;
        }, 3000);
    }
    if (canRemoveBounce) {
        canRemoveBounce = false;
        setTimeout (() => {
            petEffects.innerText = ``;
            petEffects.classList.remove("typing");
            canRemoveBounce = true;
        }, 5000);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM