【问题标题】:Atom package - setInterval not calling the functionAtom 包 - setInterval 未调用该函数
【发布时间】:2021-02-03 23:32:45
【问题描述】:

我目前正在开发一个原子包,其中涉及在画布上绘制曲线。无论出于何种原因,以下代码在调用 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)

【问题讨论】:

    标签: coffeescript atom-editor


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      相关资源
      最近更新 更多