我使用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>
答案 0 :(得分: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
}