typescript - 简单倒数计时器 typescript

标签 typescript settimeout countdown

我的构造函数中包含以下代码:

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

我真正想要的是显示一个倒计时90秒的数字。现在它立即从90计数到0

最佳答案

您可以改为使用setInterval使该函数每1秒调用一次,直到计数器达到0:

class Timer {
    constructor(public counter = 90) {

        let intervalId = setInterval(() => {
            this.counter = this.counter - 1;
            console.log(this.counter)
            if(this.counter === 0) clearInterval(intervalId)
        }, 1000)
    }
}

或者,如果您想要看起来像for并使用setTimeout的东西,则可以使用async/await和Promisses(对于这个简单的示例来说,这可能会过大):
function delay(delay: number) {
    return new Promise(r => {
        setTimeout(r, delay);
    })
}
class Timer {
    constructor(public counter = 90) {
        this.doTimer();
    }
    async doTimer() {
        for (let i = 0; i < this.counter; i++) {
            await delay(1000);
            this.counter = this.counter - 1;
            console.log(this.counter);
        }
    }
}

关于typescript - 简单倒数计时器 typescript ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51618496/

相关文章:

javascript - jQuery 倒计时获取 10 之前的时间 :00 am today or tomorrow

typescript - typescript 中的顺序 promise

typescript - 为什么不能在属性方法中访问静态成员,而在原型(prototype)方法中可以访问?

angular - 如何更改 Angular Material select 中的滚动条样式?

javascript - 如何在 Javascript 原型(prototype)中定义重复函数?

javascript - 可以使用表达式代替 setTimeout 函数中的回调函数吗?

objective-c - 如何为 RESTKIT 对象管理器设置超时间隔

安卓:CountDownTimer 不工作

angularjs - 如何使用具有构造函数参数的 TypeScript 类定义 AngularJS 工厂

javascript - 此 JS/jQuery 代码在 Firefox 中有效,但在 Chrome 中无效