web-dev-qa-db-ja.com

シンプルなカウントダウンタイマーTypescript

コンストラクターに次のコードがあります。

constructor(){
for (let i = 0; i < 90; i++) {
  setTimeout(() => {
    this.counter = this.counter - 1;
  }, 1000)
 }
}

私が実際に欲しいのは、90秒カウントダウンする数値を表示することです。今はすぐに90から0にカウントダウンします

4
Nicole W.

私が見つけた別の解決策:

counter: { min: number, sec: number }

  startTimer() {
    this.counter = { min: 30, sec: 0 } // choose whatever you want
    let intervalId = setInterval(() => {
      if (this.counter.sec - 1 == -1) {
        this.counter.min -= 1;
        this.counter.sec = 59
      } 
      else this.counter.sec -= 1
      if (this.counter.min === 0 && this.counter.sec == 0) clearInterval(intervalId)
    }, 1000)
  }

そしてあなたのhtmlで:

<span>{{counter.min}} : {{counter.sec}}</span>