Не работает setInterval node.js

272
11 февраля 2018, 01:40
function modTick(){
update()
for(var i in slowdown){
    if(slowdown[i]!=0){
        slowdown[i]--
    }else{
        delete slowdown[i]
    }
}
for(var i in games){
    for(var g in games[i].slows){
        if(games[i].slows[g].time!=0){
            games[i].slows[g].time--
        }else{
            delete games[i].slows[g]
        }
    }
    for(var g in games[i].killed){
        if(games[i].killed[g].time!=0){
            games[i].killed[g].time--
        }else{
            games[i].alive.push({id:games[i].killed[g].id,hp:100,name:games[i].killed[g].name})
            delete games[i].killed[g]
        }
    }
    if(games[i].time!=0){
        games[i].time--
    }else{
        var top=games[i].all_users
        top.sort(sortByKill)
        var top3=[]
        var n=0;
        for(var s=0;s<3;s++){
            if(top[s].kills>0){
                n++
                var award="";
                if(top[s].kills>=10){
                    users[top[s].id].money+=100000
                    award=" (Приз: 100.000$)"
                }
                top3.push(n+". [id"+top[s].id+"|"+users[top[s].id].nick+"] - "+top[s].kills+award)
            }
        }
        var b = i;
        var bgames=games[b]
        delete games[b]
        if(top3.length!=0){
            vk("messages.send",{peer_id:bgames.peer,message:"Игра завершена\nУчастников: "+bgames.alive.length+"\nУбито: "+bgames.kills+"\nУбийцы:\n"+top3.join("\n")}).then(function(r){
            },console.log)
        }else{
            vk("messages.send",{peer_id:bgames.peer,message:"Игра завершена\nУчастников: "+bgames.alive.length+"\nУбито: "+bgames.kills}).then(function(r){
            },console.log);
        }
}
}
}
setInterval(modTick,1000)

Не работает самая простая функция. При запуске кода, срабатывает один раз. Не могу понять, что происходит, и почему она перестала работать.

Answer 1

Скорее всего ты в коде написал

setInterval(modTick(), 1000)

а надо было

setInterval(modTick, 1000)
Answer 2

Возможно, над таймером где-то вызывается unref:

var interval = setInterval(modTick, 1000)
interval.unref()

В таком случае таймер будет исполняться только тогда, когда приложение работает, но приложение может завершиться даже если такой таймер запущен.

Соответственно, в твоём случае приложение завершается раньше, чем срабатывает таймер.

READ ALSO
Как хранить переменную для расширения Chrome

Как хранить переменную для расширения Chrome

Я пишу расширение Хрома, смысл которого в том, что при посещении разных сайтов оно отправляет на мой сайт заголовки этих сайтовЭти заголовки...

299
Скачивание модели с сайта с Viewer технологией (Autodesk Forge) [требует правки]

Скачивание модели с сайта с Viewer технологией (Autodesk Forge) [требует правки]

Могу ли я как-нибудь скачать модель с сайта, где используется Viewer технология? (Autodesk Forge)

240
Не пойму передачу аргументов в функцию

Не пойму передачу аргументов в функцию

Каким образом передаются аргументы из sum(1, 2) в декоратор?

179
Добавить json в data- атрибут

Добавить json в data- атрибут

Добрый вечер! Есть такая структура:

240