Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.JS代码中,如何在套接字事件之外的作用域上使用let变量?_Javascript_Node.js_Protocol Buffers - Fatal编程技术网

Javascript 在Node.JS代码中,如何在套接字事件之外的作用域上使用let变量?

Javascript 在Node.JS代码中,如何在套接字事件之外的作用域上使用let变量?,javascript,node.js,protocol-buffers,Javascript,Node.js,Protocol Buffers,在Node.JS代码中,如何在套接字事件之外的作用域上使用let变量'equipe' socket.on('equipConnected', (data) => { let equip = equips.Equip.deserializeBinary(data); console.log(equip.getName()); }); 最简单的方法是: 更好的参数: socket.on('equipConnected', (data) =&

在Node.JS代码中,如何在套接字事件之外的作用域上使用let变量'equipe'

socket.on('equipConnected', (data) => {
       let equip = equips.Equip.deserializeBinary(data);
       console.log(equip.getName());        
    });
最简单的方法是:

更好的参数:

socket.on('equipConnected', (data) => {
    doSth(equips.Equip.deserializeBinary(data));
    console.log(equip.getName());        
});

function doSth(equip) {
  console.log(equip);
}

您不应该这样做,因为您不知道它什么时候有效,多个用户点击您的服务器会导致它的值在没有警告的情况下更改。所以,你真的应该把你的问题改成你真正想做的事情,这样我们才能更好地帮助你解决真正的问题,因为你要求的不是解决问题的方法。好吧,但是我如何为一个套接字客户端发出这些信息呢?然而,问题事件发生在server.jsI上,我不明白最后一条评论是什么意思。您将问题标记为node.js,因此我假设您正在向我们展示服务器端代码。是的!这是服务器代码!我现在的问题是如何使用emit通过socket.io将“equipm”变量中的数据发送到客户端?要发送到客户端,请使用socket.emit。仍然不确定你在问什么。第一个选项不太可能是解决多用户服务器问题的有效或可取的方法。是的,但你不会教新手一些只在调试情况下正常工作,而不是在真正的服务器情况下正常工作的东西。这就是我评论的重点。这不是解决服务器端问题的推荐方法,因此不应该出现在一个好的答案中。
socket.on('equipConnected', (data) => {
    doSth(equips.Equip.deserializeBinary(data));
    console.log(equip.getName());        
});

function doSth(equip) {
  console.log(equip);
}