亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

如何在Vuex中啟動第二個計時器,當(dāng)?shù)谝粋€計時器過期?
P粉242535777
P粉242535777 2024-03-30 14:06:31
0
1
514

我有一個Vue項目,在Vuex儲存中有以下狀態(tài):

state: {
  gameStartTimer: 5,
  counter: false,
  randomNumber: Number,
  clickAlert: false
}

現(xiàn)在,在actions中,我有以下內(nèi)容:

actions: {
    async startCounter({ state }) {
      state.counter = true;
      state.clickAlert = false;
      while (state.gameStartTimer > 0 && state.counter) {

        // 這將定時器設(shè)置為從5倒數(shù)到0
        await new Promise(resolve => setTimeout(resolve, 1000));
        if (state.counter)
          state.gameStartTimer--;

        // if語句確保在gameStartTimer達到0時獲取nowTime
        if (state.gameStartTimer == 0) {
          let timeNow = new Date().getTime();
          state.nowTime = timeNow;
        }
      }
      state.counter = false;

      // 我想在這里啟動第二個定時器,每秒倒計時一次,直到randomNumber狀態(tài)達到0
        await new Promise(resolve => setTimeout(resolve, 1000));
        if (state.clickAlert)
          state.randomNumber--;

        if (state.randomNumber == 0) {
          state.clickAlert = true;
        }
      }

    },
}

我面臨的問題是,第一個計時器被包裹在一個while循環(huán)中,這正是我想要的,以便遊戲從5開始倒數(shù)到0。

然後,我希望第二個定時器(使用randomNumber作為持續(xù)時間)在後臺運行,然後將clickAlert狀態(tài)設(shè)為true。

然而,我無法在async/await方法中使第二個定時器運行。我不太確定文法或邏輯問題是什麼。

任何提示都將不勝感激。

P粉242535777
P粉242535777

全部回覆(1)
P粉333395496

明顯的解決方案似乎是將第二個計時器也放在一個while循環(huán)中。

while (state.randomNumber > 0) {
    await new Promise(resolve => setTimeout(resolve, 1000));
    state.randomNumber--;

    if (state.randomNumber === 0) {
        state.clickAlert = true;
    }
}

async/await只是一種避免回呼函數(shù)的方法。它在功能上等同於以下程式碼:

while (state.randomNumber > 0) {
    setTimeout(() => {
        state.randomNumber--;
    }, 1000);
}
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板