我正在尝试使用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
中没有变化。)
我该如何解决这个问题?
答案 0 :(得分:2)
欢迎来到异步代码的世界!没有任何东西线性运行。
您所拥有的代码只是为事件read
和request
添加侦听器,而不是实际更改a
和b
。因此,a
和b
仍然是0
,直到执行处理程序,这将是服务器通过read
或request
事件发送的时间。
您可以做的是在事件触发后放置您想要发生的任何事情。然后在事件处理程序中调用该函数:
$(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);
});
});