我将setInterval()用于匿名函数,我想在另一个匿名函数中使用clearInterval()。我正在使用socket.io,我需要为每个套接字都有intervalID,所以我不能使用全局变量。
当clearLoops()被触发到setInterval循环中时,我可以clearInterval,但它在我的其他套接字事件中不起作用。
io.sockets.on 'connection', (socket) ->
intervalID = -1
clearLoops = ->
if intervalID != -1
clearInterval intervalID
intervalID = -1
socket.on 'first:action', (data, callback) ->
myArray = data
setTimeout(->
intervalID = setInterval(->
arrLength = myArray.length
if arrLength is 0
clearLoops()
while i < arrLength
if myArray[i].score >= MAX_SCORE
myArray.splice i, 1
i--
arrLength--
i++
, 300)
, 3000)
socket.on 'second:action', ->
clearLoops()
socket.on 'disconnect', ->
clearLoops()
答案 0 :(得分:1)
您的代码在语法上无效。第9行缺少参数之间的逗号:
socket.on 'first:action' (data, callback) ->
应该是
socket.on 'first:action', (data, callback) ->
提示:http://coffeescript.org的“Try CoffeeScript”功能有一个内置的语法检查程序,您可以使用它来仔细检查代码段,因为它们没有按预期工作。