クラス内で setInterval を実行しようとしていますが、以下のコードは、車が作成されるときにその updatePosition への呼び出しが定期的に呼び出されるという意味で正常に機能します。
問題は、setInterval の「スコープ」で @currentSpeed 変数の値を取得できないことです。代わりに、updatePosition 関数が間隔で呼び出されると、console.log に「Updating position: Speed: undefined」が表示されます。
加速()関数(加速ボタンを押すたびに呼び出される)を呼び出すと、期待される @currentSpeed 値が返されます
setInterval スコープで @currentSpeed から値を取得するにはどうすればよいですか?
私のコードの関連部分は次のとおりです。
class Car
constructor: () ->
@currentSpeed = 0
intervalMs = 1000
@.setUpdatePositionInterval(intervalMs)
setUpdatePositionInterval: (intervalMs) ->
setInterval (do => @updatePosition ), intervalMs
updatePosition: () ->
# below logs: "Updating position: Speed: undefined"
console.log("Updating position: Speed: #{@currentSpeed}")
accelerate: () ->
#below logs the expected value of @currentSpeed
console.log "ACCELERATING! CurrentSpeed: #{@currentSpeed}"