【问题标题】:change a variable in socket.on更改 socket.on 中的变量
【发布时间】:2013-06-22 23:20:01
【问题描述】:

我正在尝试使用 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中的变量没有改变)。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript jquery node.js socket.io


    【解决方案1】:

    欢迎来到异步代码的世界!没有任何东西是线性运行的。

    您拥有的代码只是为事件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);
      });
    
    });
    

    【讨论】:

      猜你喜欢
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2021-03-23
      相关资源
      最近更新 更多