0

我使用 Node.js、Express 和 socket.io。

我无法更改 socket.on 函数中的全局变量。

这很奇怪,因为我之前设法做到了,但现在它出了问题,我不知道为什么。有一个简单的答案,但它不起作用:16270997

你能帮我吗 ?


服务器 :

   var express = require('express');
   var app = express.createServer();
  app.use(express.static(__dirname + '/public/tank/'));
  var server = app.listen(8080);

  var socket = require("socket.io");
  var io = socket.listen(server);

  io.sockets.on('connection', function (socket) {
      socket.emit('con');
   });

客户 :

<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect();  
var id = 1;

socket.on('con', function () {
   id++;
   alert(id); // it displays 2
});

alert(id);  // it displays 1

</script>
4

1 回答 1

3

alert甚至在con收到并id++执行消息之前就触发了外部。

您可以通过以下方式检查

var socket = io.connect();  
var id = 1;

socket.on('con', function () {
   id++;
   alert(id); // it displays 2
   printGlobalIdvalue(); // prints global variable
});

function printGlobalIdvalue() {
    alert(id);  // it also displays 2
}
于 2013-08-21T19:33:11.053 回答