首页 > 解决方案 > Atom 包 - setInterval 未调用该函数

问题描述

我目前正在研究原子包,其中涉及在画布上绘制曲线。无论出于何种原因,以下代码在调用 handleClickDown 时会记录“mouseDown”,而不会记录“hi”。我试过没有window.但仍然“mouseDown”是所有的记录。如果上下文有帮助,则每次单击画布时都会调用 handleClickDown 函数。我确定我只是不了解 setInterval / coffescript 如何工作,因为我对 atom 和 coffescript 都是新手。任何帮助表示赞赏。

@printhi: ->
     console.log "hi"

handleClickDown: (event, element) ->
     console.log "mouseDown"
     @mouseDownId = window.setInterval(@printhi,100)

编辑:以下代码似乎运行良好

console.log "mouseDown"
@mouseDownId = setInterval(()=>
    console.log "inner"
,75)

但是,当使用这样的函数时,它会抛出一个错误_this.printhi is not a function

@printhi = () ->
    console.log "hi"

handleClickDown: (event, element) ->
    console.log "mouseDown"
    @mouseDownId = setInterval(()=>
        @printhi()
    ,75)

标签: coffeescriptatom-editor

解决方案


好的,只是在这里回答我自己的问题,因为我最终想通了。结果我对@和=>在coffeescript中的工作方式有点困惑。您实际上需要从中删除 @@printhi: ->使其变为printhi: ->然后仅在您像这样调用它时才使用它@printhi()

下面的代码对我有用,希望有人觉得这有帮助

printhi: ->
    console.log "hi"

handleClickDown: (event, element) ->
    console.log "mouseDown"
    @mouseDownId = setInterval(()=>
        @printhi()
    ,75)

推荐阅读