0

これはコーヒーから変換された私の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の 'sを生成し続けます

同じエラーの別の例を次に示しますが、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
4

2 に答える 2

3

クリアする前に、関数を既に返しました。まずクリアしてから戻ってください。

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

の値については、宣言方法ではなく、呼び出し方法によって決定さthisれるため注意してください。this

于 2013-05-08T21:31:38.943 に答える
0

わかりましたので、これを set_timer 関数の先頭に追加すると、機能します!

if (this.timer !== null) {
  clearInterval(this.timer);
}
于 2013-05-08T22:23:31.163 に答える