我一直在尝试使用 Backbone JS 制作一个准确的 JavaScript 计时器,据我所知:
除了完整的事件在不应该触发的时候触发两次之外,它还可以工作,我需要做什么来修复/改进它有什么想法吗?
控制台输出:
"tick 10 1"
"tick 10 2"
"tick 10 3"
"tick 10 4"
"tick 10 5"
"tick 10 6"
"tick 10 7"
"tick 10 8"
"tick 10 9"
"complete 10 10"
"complete 10 11"
最佳答案
您调用了 start
两次,一次是在 TimerView.initialize
中调用,另一次是在实例化它之后调用,这意味着您有两个并发的 setTimeout
> 发生循环(并且计时器的移动速度是原来的两倍):
var Timer = Backbone.Model.extend({
/* ... */
});
var TimerView = Backbone.View.extend({
/* ... */
initialize: function () {
this.model.on('tick', function(e){console.log('tick '+e.steps+' '+e.count);}, this);
this.model.on('complete', function(e){console.log('complete '+e.steps+' '+e.count);}, this);
this.model.start(); // <-- One here
}
});
var timer = new Timer();
var timerView = new TimerView({model: timer});
timer.start(); // <-- Another here
关于javascript - 一个准确的 Javascript 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20890301/