我正在尝试使用 node.js 做一个项目,但在显示变量时遇到了问题。
客户端这部分代码:
$(document).ready(function () {
var socket = io.connect('http://localhost:8000');
var a = 0;
var b = 0;
socket.on('request', function (data) {
a = data;
});
socket.on('read', function (data) {
b = data;
});
var q = a * b;
$('span#calculate').html(q);
// Etc...
});
正常情况下它应该显示此计算的结果,但它仍然显示 0
(这意味着 socket.on
中的变量没有更改)。
如何解决这个问题?
最佳答案
欢迎来到异步代码的世界!没有什么是线性运行的。
您的代码只是为事件read
和request
添加监听器,而不是实际更改a
和b。因此,a
和 b
仍然是 0
,直到执行处理程序,即服务器通过 read
发送消息时code> 或 请求
事件。
您可以做的就是将事件触发后您想要发生的任何事情放置在函数中。然后在事件处理程序中调用该函数:
$(document).ready(function () {
var socket = io.connect('http://localhost:8000');
var a = 0;
var b = 0;
var calculate = $('span#calculate');
function recalculate(q) {
calculate.html(q);
//more...
}
socket.on('request', function (data) {
a = data;
recalculate(a * b);
});
socket.on('read', function (data) {
b = data;
recalculate(a * b);
});
});
关于javascript - 更改socket.on中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252020/