这是我从coffee转换成的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/

10-12 21:56