簡體   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