Less is Best

rubyが好き。技術の話とスタートアップに興味があります。

CoffeescriptでsetIntervalを実行した際にthisを認識できずにコケる

CoffeescriptでsetIntervalを実行した際にthisを認識できずにコケるバグが発生。

ソースの概要はこちら

class Main
    render: ->
        @ctx.drawImage(@video, 0, 0)

    videoStart: ->
        @timer = setInterval(@render,100)

Chromeのデバッカで確認してみたところ、windowプロパティしか認識していない。うまくthisを拾えていないよう。原因はsetIntervalがグローバルな場所で実行されていることだと判明。

ぐぐってみるとstackoverflowで解決方法を発見

要は、thisをバインディングしてしまえばオッケー! ってことで、render:->render: =>に変更してバインディング

class Main
    render: =>
        @ctx.drawImage(@video, 0, 0)

    videoStart: ->
        @timer = setInterval(@render,100)

無事setIntervalを動かすことが出来ました。