2013-09-02 2 views
0

Я использую 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() 
+0

Это выглядит как проблема. Я подозреваю, что в вашей консоли браузера есть ошибка «неопределенная не является функцией», потому что «clearLoops» не находится в области, где вы пытаетесь ее вызвать. –

+0

Я могу вызывать 'clearLoops', но' intervalID' всегда равен '-1', если только он не вызвал цикл' setInterval'. Я думаю, это тоже проблема, возможно, анонимные функции socket.io виноваты? –

ответ

1

Ваш код не является синтаксически действительным. Строка 9 отсутствует запятая между параметрами:

socket.on 'first:action' (data, callback) -> 

должен быть

socket.on 'first:action', (data, callback) -> 

Подсказка: http://coffeescript.org «s„Попробуйте CoffeeScript“особенность имеет встроенный синтаксической проверки, которые вы можете использовать для перепроверки ваши фрагменты кода, когда они не работают должным образом.

+0

Извините, это плохой обзор кода перед публикацией. Я проверяю свой файл, есть запятая. Я редактировал сообщение. –

Смежные вопросы