在socket.on中更改一个variables

我想用node.js做一个项目,但是我遇到了一个显示variables的问题。

客户端的这部分代码:

$(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 (这意味着该variables没有改变socket.on )。

我怎么解决这个问题?

欢迎来到asynchronous代码的世界! 没有任何线性运行。

你在那里的代码只是添加事件readrequest监听器 ,而不是实际上改变ab 。 因此,在执行处理程序之前, ab仍然是0 ,这是服务器发送readrequest事件时的情况。

你所能做的就是在事件触发之后放置任何你想要发生的事情。 然后在事件处理程序中调用该函数:

 $(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); }); });