Javascript 并行运行两个async.series

Javascript 并行运行两个async.series,javascript,asynchronous,Javascript,Asynchronous,我正在制作一个简单的javascript游戏。虽然我使用警报,因为它们很简单,但我正在尽可能使程序异步,以便用HTML轻松替换警报。目前,我设置了新玩家和他的两个控制键,如下所示: var name = "Player"; // TODO: Replace with HTML element name = prompt("Name?", "Player "+gameSlave.lines.length+1); var color = 0xFFFFFF; color = parseInt(prom

我正在制作一个简单的javascript游戏。虽然我使用警报,因为它们很简单,但我正在尽可能使程序异步,以便用HTML轻松替换警报。目前,我设置了新玩家和他的两个控制键,如下所示:

var name = "Player";
// TODO: Replace with HTML element
name = prompt("Name?", "Player "+gameSlave.lines.length+1);
var color = 0xFFFFFF;
color = parseInt(prompt("Color (hex)?", "0x"+Math.round(Math.random()*16777215)).toString(16),16);
var keys = {right:null, left: null};

async.series([
    /** KEY GATHERING BOCK **/
      //Empty function to clear event loop buffer where keystrokes are still remaining
      function(callback){setTimeout(callback, 50);},
      function(callback){gatherControlKey("LEFT", function(key) {keys.left=key;callback()});},
      function(callback){gatherControlKey("RIGHT", function(key) {keys.right=key;callback()});},
    /** REMOTE PLAYER GATHERING BLOCK **/
      function(callback) {
        // If player is added, continue
        gameSlave.once("player.added", callback);
        // Ask game to create new player
        gameSlave.emit("player.requested", name, color);
      },
      function(callback) {
          alert("Player set!");
      },
]);
但有两个独立的区块:

  • 收集玩家控制键
  • 要求服务器创建播放器(服务器返回名称、id和颜色)
  • 所以我想异步运行两个同步链。比如:

    async.parallel([  //This throws error f you fill something in series
        async.series([ ... ]),
        async.series([ ... ])
    ]);
    

    我不认为你的问题很清楚,你没有说你的具体问题是什么,你只是说它抛出了一个异常,所以我试着猜测你的代码中出了什么问题。 我认为您的语法不正确,您应该将该系列包装为两个函数,以便在该系列完成时可以调用它们的回调。 不应该是这样吗

    async.parallel([
        function(pCb) {
            async.series([
                function(cb) {
                    console.log(1);
                    cb();
                }
            ], function() {
                console.log("completed first series");
                pCb();
            })
        },
    
        function(pCb) {
            async.series([
                function(cb) {
                    console.log(2);
                    cb();
                }
            ], function() {
                console.log("completed second series")
                pCb();
            })
        }
    ], function() {
        console.log("completed parallel");
    });
    

    如果这不能解决问题,那么你能把你的问题说得更具体一点吗

    我想你很了解我的问题。我只是不知道如何正确地把串联变成并联。