javascript - 一个准确的 Javascript 计时器

标签 javascript backbone.js timer

我一直在尝试使用 Backbone JS 制作一个准确的 JavaScript 计时器,据我所知:

Source Code

除了完整的事件在不应该触发的时候触发两次之外,它还可以工作,我需要做什么来修复/改进它有什么想法吗?

控制台输出:

"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/

相关文章:

timer - 用于创建计时器的 Vala/SDL 回调

asynchronous - 如何在 flutter 应用程序中显示 5 分钟不可停止的计时器?

backbone.js - 如何在backbone.js中使用回退路由来捕获未知页面

javascript - 在 Backbone View 中填充 React 组件

javascript - Google Charts 倒置面积图

javascript - 在本地主机上的 .php 文件中测试 jQuery 但无法正常工作

javascript - 从输入将数据添加到模型

java - ExecutorService 与 Swing 定时器

Javascript 错误仅在 uglify mangle 为 false 时发生

javascript - JS 和 Prototype : mouseover influencing overlying element, 为什么?