好像我嘗試這種方式的每種方式都會引發某種錯誤。以下是我的代碼現在的樣子:CoffeeScript中的Backbone.js setTimeout()循環
runShow: ->
moments = @model.get('moment_stack_items')
if inc == moments.length
inc = 1
pre = 0
$("#" + moments[pre].uid).hide("slide", { direction: "left" }, 1000)
$("#" + moments[inc].uid).show("slide", { direction: "right" }, 1000)
inc += 1
pre += 1
console.log "looping" + inc
t = setTimeout(this.runShow(),2000);
我在我的事件中調用該函數。 我有inc = 1
和pre = 0
定義的Backbone.View外。我當前的錯誤是「未捕獲TypeError:對象[對象DOMWindow]沒有方法'runShow'」
獎金要點:如何從另一個函數引用t我的clearTimeout(t))?
使用setTimeout中的字符串在幕後調用eval。我會強烈考慮將其改爲該函數的參考。例如t = setTimeout(this.runShow,2000); http://stackoverflow.com/questions/86513/why-is-using-javascript-eval-function-a-bad-idea – Gazler
夠公平的@Gazler,我已經從代碼中刪除它。 user576875解決方案也將其刪除。 – thatmiddleway