nodejs setinterval转换为实时

时间:2017-06-08 06:56:52

标签: javascript node.js time timer

我正在构建小型多人游戏,并且我很难掌握setInterval配置。让我们说,我想给予玩家在冷却时间内运行的能力,或者在实际时间间隔内产生某些物体(比如每5秒或有2秒冷却)。问题是我无法将服务器setInterval循环与实时概念同步。

例如我有这个循环运行冷却时间:

setInterval(function() {
    game.mechanics.buffered.cooldowns.run();
}, 10);

我注意到如果我降低此10值,冷却时间会更快,如果我将其设置为更高的数字,它们会运行得更慢,但我不知道如何实时同步。我甚至不知道首先应该在服务器循环中放置什么值,到目前为止我对10ms感到满意,但实际冷却时间目前还不适用。

逻辑点setTimeout是更适合产卵的解决方案,但setInterval使我有可能提供进度条而setTimeout没有。

问题是,如何正确配置此循环以便我可以在冷却对象中说它持续2秒并且将在这2秒后执行。

1 个答案:

答案 0 :(得分:0)

这不是完美的解决方案,但它可以让你开始。

var last = 0,
    current = 0,
    tick = 10,
    seconds = 3;

setInterval(function() {
    current += tick;
    if(current - last >= seconds * 1000) {
        last = current;
        console.log(new Date().getSeconds());
    }
}, tick);