Я использую setInterval() в анонимной функции, и я хочу использовать clearInterval() в другой анонимной функции. Я использую socket.io, и мне нужно иметь intervalID для каждого сокета, поэтому я не могу использовать глобальную переменную.Coffeescript: setInterval, clearInterval и анонимная функция
Я могу очиститьInterval, когда clearLoops() запускается в цикле setInterval, но он не работает в других моих событиях сокета.
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()
Это выглядит как проблема. Я подозреваю, что в вашей консоли браузера есть ошибка «неопределенная не является функцией», потому что «clearLoops» не находится в области, где вы пытаетесь ее вызвать. –
Я могу вызывать 'clearLoops', но' intervalID' всегда равен '-1', если только он не вызвал цикл' setInterval'. Я думаю, это тоже проблема, возможно, анонимные функции socket.io виноваты? –