2016-08-11 28 views
0

這是我的CoffeeScript代碼。使用CoffeeScript將方法傳遞到SetTimeOut

setTimeout (-> @checkProgress()), 5000 

當我在瀏覽器中我碰到下面的錯誤運行此:

TypeError: this.checkProgress is not a function 

的方法是這樣的:

checkProgress: -> 
    ~ code 
    ~ code 
    ~ code 
    setTimeout (-> @checkProgress()), 5000 

因此,在某些時候,我想再次調用該方法。我怎樣才能做到這一點?謝謝。

+0

「@ checkProgress」已經是'function'。你不需要把它包裝在另一個'function'中。只需使用'setTimeout @checkProgress,5000' – Ruslan

+0

在其他情況下,您可以使用helper:'delay =(t,fn) - > setTimeout(fn,t)'。 – Ruslan

+0

這就是我之前所做的事情,但後來我讀到,當這樣做時,實際函數不會被調用,而是函數的結果會以該參數位置結束,這不是我想要的。 – terratunaz

回答

2

setTimeout運行@checkProgresswindow上下文中。使用胖箭頭:

setTimeout (() => @checkProgress), 5000 
+0

這工作,有點。我最終得到了一個不同的錯誤。對於我在方法代碼中引用的變量未定義。 – terratunaz

0

這對我個人來說也是非常完美的。

recall = => 
      @checkProgress() 
     setTimeout recall, 5000