课堂上的Coffeescript setInterval

Jac*_*cob 3 setinterval coffeescript

我上周开始写coffeescript,因为我正在编写一个新的Play20网站,其中coffeescript是标准.我想每隔5分钟在我的类中更新一个getData函数,但是setInterval函数不会绑定到我的类.只是第一次调用getData,因为'this'对象仍然可以访问,因为从构造函数中调用了setUpdateInterval()函数.

但是在第一次调用之后,setInterval不再与Widget实例有任何连接,并且不知道this.getData()函数是什么(以及如何到达它).

有人知道怎么做吗?

这是我的代码:

class Widget
  constructor: (@name) ->
    this.setUpdateInterval()

  getData: ->
    console.log "get Data by Ajax"

  setUpdateInterval: (widget) ->
    setInterval( this.getData(), 3000000 )
Run Code Online (Sandbox Code Playgroud)

Rea*_*onk 7

现在这里需要一些Javascript魔法.参考

class Widget
  constructor: (@name) ->
    this.setUpdateInterval()

  getData: ->
    console.log "get Data by Ajax"

  setUpdateInterval: (widget) ->
    callback = @getData.bind(this)
    setInterval( callback, 3000000 )
Run Code Online (Sandbox Code Playgroud)

这将适用于几乎所有浏览器(猜测哪一个不是),因此该函数必须以不同方式绑定.一些coffeescript魔术:

callback = => @getData
Run Code Online (Sandbox Code Playgroud)