2013-05-08 3 views
0

Это мой JS конвертируются из кофе:Кто-нибудь знает, что в этом clearInterval делает это непонятным?

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 и назван поместил в $ в качестве методов микширования для подчеркивания

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

Вам нужно показать, как это называется. Я предполагаю, что «это» не является обязательным, как ожидалось. – djechlin

+1

Я предполагаю, что 'this' (в вашем clearInterval) не то, что вы думаете. –

ответ

3

Вы уже вернули функцию перед ее очисткой. Сначала очистите его, затем верните.

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

Что касается стоимости this, будьте осторожны, так как this определяется тем, как вы ее называете, не так, как она была объявлена.

+0

D'oh. Я не могу поверить, что не видел этого – Ian

+0

Я обновил свой ответ, но он все равно не работает. Тот же вопрос – Trip

+0

@Trip как вы называете 'reset_timer'? – Joseph

0

Хорошо, если я добавлю это в начало моей функции set_timer, он работает!

if (this.timer !== null) { 
    clearInterval(this.timer); 
} 
Смежные вопросы