javascript 是否强制节点等待输入后再继续?

ilmyapht  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(97)

我正在做一个回合制游戏,用节点作为我的服务器端代码。问题是我不知道如何让程序在进入另一个函数之前等待输入。最好是,我希望它等待玩家1的动作,一旦收到,然后等待下一个玩家,直到所有回合都完成。而且,这只是立即执行nextFunction,这在了解异步执行后是有意义的。但我不希望这件事发生。

this._players.forEach((player, idx) => {
      player.on('turn', (turn) => {
        this._turns[index] = turn;
      });
    });
    nextFunction();

我尝试使用async,wait,还有promises,但是我认为我没有正确地实现它们。我也不确定。on()甚至是要走的路。在我的客户端,作为参考,我有几个按钮,当按下时,发出一个id,我可以使用服务器端做逻辑。我想。然后()可能会有帮助,但它可能会使代码难以维护,也难以在开发过程中跟踪,因为我可能需要使用大量的.then()。有没有更好的方法在节点中编写此代码?
基本上,我需要我的代码在继续之前等待用户输入。

kb5ga3dv

kb5ga3dv1#

你可以使用once来创建一个等待单个事件的承诺,然后在循环中使用它:

for (const [index, player] of this._players.entries()) {
  this._turns[index] = await once(player, 'turn');
}
nextFunction();

相关问题