我可以在nodejs服务器上同时运行两个setTimout循环吗?

时间:2016-12-31 06:01:41

标签: javascript node.js

我正在使用Nodejs构建游戏服务器。但是我在运行setTimeout时遇到问题可能是因为我不太了解游戏循环的概念。

这是我的代码:

let tickLengthMS = 1000 / 60;
let previousTick = Date.now();

export function gameLoop() {
    const now = Date.now();

    if (previousTick + tickLengthMS <= now) {
        const delta = (now - previousTick) / 1000;
        previousTick = now;

        update(delta);

    }

    if (Date.now() - previousTick < tickLengthMS - 16) {
        setTimeout(gameLoop);
    } else {
        setImmediate(gameLoop);
    }
}

所以这是更新我的游戏的游戏循环。我需要运行另一个循环,以不同的频率/时间步长向客户端发送消息。

export function updateNetwork() {
   pack = ...
   socket.emit('update', pack);
   setTimeout(updateNetwork, 1000 / 20);
}

然后我就跑了:

gameLoop();
updateNetwork();

但它永远不会运行第二个setTimeout函数。我想知道第一个gameLoop函数是否阻塞了第二个setTimeout。但是不是setTimeout一个非阻塞方法吗? gameLoop函数是否等于其他语言(如java和C ++)中的while(true) {}

更新问题以制作两个循环。

0 个答案:

没有答案