Socket.io 将数据发送到全局变量

Posted

技术标签:

【中文标题】Socket.io 将数据发送到全局变量【英文标题】:Socket.io send data to global variable 【发布时间】:2017-10-10 14:37:00 【问题描述】:

我正在使用 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>

【问题讨论】:

您可以可靠地使用随player 消息到达的data 的唯一位置是在该消息处理程序内部。这就是异步操作的工作方式。将想要使用该数据的代码放入该消息处理程序中。 【参考方案1】:

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>

【讨论】:

是的,我知道 socket.io 的异步属性,但由于我是新手,我不确定如何解决它。所以我必须在播放器函数中返回数据变量?我该如何退货?

以上是关于Socket.io 将数据发送到全局变量的主要内容,如果未能解决你的问题,请参考以下文章

Socket io 'on' 回调运行多次

ajax请求返回数据保存为全局变量

python测试开发django-172.jQuery 发送请求获取的数据设置为全局变量

异步请求的数据,并将数据赋值给全局变量的一些解决方法

将 ajax 响应中的变量存储为全局变量并用于发送其他 ajax 请求?

Alamofire 访问将数据附加到全局变量