发出数组导致最大调用堆栈大小超标 Javascript socket.io

问题描述 投票:0回答:1

我有一个函数,调用它的代码是

    //  ***************     Send Players their cards     ***************
function sendplayerThierCards(myplayerNum, myN_Cards){
  console.log("sending player: "+ myplayerNum + " their cards: " + myN_Cards);
  socket.emit('playersCards', {
    playerNum: myplayerNum,
    myCards: myN_Cards,
    room: code
  });
}

调用该函数的代码:

let myHand = new Array();
for(let i=0; i<5; i++)
    myHand[i] = player1Hand[i]
sendplayerThierCards(1,myHand);

如果我发送一个字符串到myN_Cards中, emit就会被调用.如果我发送一个数组到myN_Cards中, 我得到一个错误: "最大调用堆栈大小超过Javascript"

服务器在这里。https:/github.comtsehnoutkaGameServer。

游戏代码在这里。https: /github.comtsehnoutkacallStackSizeExceeded。

这对我来说是没有意义的,因为我能够在我的代码的另一部分发送一个数组.另一个Array:

var playerInfo = [{
    name: "Red",
    color: "red",
        background: "Coral"
  },
  {
    name: "Blue",
    color: "blue",
        background: "LightSkyBlue"
  },
  {
    name: "Green",
    color: "green",
        background: "Lime"
  },
  {
    name: "Yellow",
    color: "yellow",
        background: "#fcfce8"
  },
];

和它的功能。

//  ***************     Send All Players     ***************
function sendAllPlayersJoined(){
  console.log("sending all players info");
  socket.emit('allPlayersNames', {
    players: playerInfo
  });
}
javascript sockets emit
1个回答
0
投票

我改变了我发送的数据量,似乎可以工作了,而不是整张牌,我只是发送了等级和套装。

for ( i = 0; i < 5; i++)
  myHand[i] = {suit: player1Hand[i].suit, rank: player1Hand[i].rank};
sendplayerThierCards(1, myHand);

谢谢大家

© www.soinside.com 2019 - 2024. All rights reserved.