2017-10-10 3 views
0

私はマルチプレイヤーゲームを作るためにsocket.ioを使用していますが、サーバが返すすべてのものが関数の中に含まれているという問題があります。 私はクライアント側のグローバル変数にデータを返そうとしています。Socket.ioはグローバル変数にデータを送信します

<script> 
    let test = "no"; 
    let socket = io(); 
    socket.on('player',function(data){ 
     test = data; 
    }); 
    console.log(test); // says no instead of yes  
</script> 
+0

、あなたは確実にそのメッセージハンドラ内で 'player'メッセージで到着' data'を使用することができる唯一の場所非同期呼び出しです。これが非同期操作の仕組みです。そのデータを使用したいコードをそのメッセージハンドラの中に置きます。 – jfriend00

答えて

0

socket.onは、このように

<script> 
    let test = "no"; 
    let socket = io(); 
    socket.on('player',function(data){ 
     test = data; 
     **console.log(test);** //say yes and also return it here 
    }); 
    // console.log(test); // says no instead of yes , will not work as async 

</script> 
+0

はい私はsocket.ioの非同期プロパティを認識していますが、私は新しくなって以来、どうやって回避するのかは分かりません。だから、私はプレーヤーの関数でデータ変数を返す必要がありますか?それを返すにはどうしたらいいですか? – Grey

関連する問題