javascript - 有谁知道这个clearInterval 中的什么内容不清楚吗?

标签 javascript loops intervals

这是我从咖啡转换而来的js:

set_timer: function() {
  var _this = this;
  return this.timer = setInterval(function() {
    _this.set({
      time_to_complete: _this.get("time_to_complete") + 1
    });
    if (_this.get("time_to_complete") > 3) {
      console.log("End of clear.");
      return _this.reset_timer(_this.timer);
    }
  }, 1000);
},
reset_timer: function() {
  clearInterval(this.timer);
  return this.set({
    time_to_complete: 0
  });
}

然后它被称为:

this.model.set_timer();

由于某种原因,这并不清楚,我的时间间隔不断产生这些 console.log

这是相同错误的另一个示例,但在 Coffeescript 中,命名空间为 $ 作为下划线的 mixin 方法

set_timer: (model) =>
  $.timer = setInterval =>
    model.set time_to_complete: model.get("time_to_complete") + 1 
    if model.get("time_to_complete") > 3
      console.log "End of clear."
      _.reset_timer model
  , 1000

reset_timer: (model) ->
  clearInterval $.timer
  model.set time_to_complete: 0

最佳答案

在清除该函数之前,您已经返回该函数。先清除,再返回。

reset_timer: function() {
  clearInterval(this.timer);
  return this.set({
    time_to_complete: 0
  });
}

至于 this 的值,请小心,因为 this 是由您调用它的方式决定的,而不是由它的声明方式决定的。

关于javascript - 有谁知道这个clearInterval 中的什么内容不清楚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450492/

相关文章:

JavaScript 增量游戏间隔循环

angular - 如何动态更改 Angular/RxJS 间隔的周期/延迟

javascript - if 语句发生变化

写入 Chrome 或 Mozilla 元素选项卡的 JavaScript 不起作用

c# - 如何在控制台中显示一个简单的空心星号矩形?

java - 使用 Java 8 在列表中查找匹配项以创建新列表

MySQL 获取一段时间内的每日计数

javascript - 如何将用户重定向到引用页面

javascript - 是否可以在 Angular JS 中进行服务器端渲染(在旧版本中,即 2.0 之前的版本)?

ruby - 如何仅通过多个对象的唯一组合进行迭代?