簡體   English   中英

並行運行兩個async.series

[英]Run two async.series in parallel

我正在做一個簡單的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!");
      },
]);

但是有兩個獨立的塊:

  1. 收集播放器控制鍵
  2. 要求服務器創建播放器(服務器返回名稱,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");
});

如果不能解決問題,那么您能否讓您的問題更具體些?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM