gpt4 book ai didi

javascript - 如何使用 Ember.run.later 实现秒表倒计时

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:01 25 4
gpt4 key购买 nike

解决方案归结为“如何清除 Ember.run.later 的间隔”

  class CountdownTimer {

constructor() {
this.counterContinue = false;
}

start() {
this.counterContinue = true;
this.decreaseCounterLoop();
}

stop() {
this.counterContinue = false;
}

decreaseCounterLoop() {
Ember.run.later(this, function() {
//do work

if (this.counterContinue) {
this.decreaseCounterLoop();
}
}, 1000);
}
}

我尝试实现一个可以随意开始和停止的倒数计时器。但目前这有一个错误。

我调用 stop(),然后再次快速调用 start(),以便 decreaseCounterLoop 开始循环两次 一秒钟。

最佳答案

有许多不同的方法可以解决此问题,但您发布的代码中的问题是调用停止时超时未清除 - 这意味着,正如您所注意到的,您最终可能会运行两个循环。

class CountdownTimer {

constructor() {
this.timeout = null;
}

start() {
this.decreaseCounterLoop();
}

stop() {
clearTimeout(this.timeout);
}

decreaseCounterLoop() {
this.timeout = setTimeout(this, function() {
//do work
this.decreaseCounterLoop();
}, 1000);
}

}

我没有使用过 Ember,但同样的逻辑应该可以使用 Ember.run.cancel .

关于javascript - 如何使用 Ember.run.later 实现秒表倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com