从 Socket.io 回调中更改全局变量

Changing global variable from Socket.io Callback

客户代码:

var app = {
    data: {
        user: null
    }
};

var client = {
    connect: function () {
        client.data.socket.on('connectCallback', function (obj) {
            if (obj.userFound) {
                app.data.user = obj.user;
                return app.data.user;
            }
        });
        /** 
        Other callbacks 
        **/
    };
};

app.data.user 总是 null,我还尝试了第二个函数来更改变量。服务器返回的对象不是null,我已经检查过了。

使用 var foo = client.data.socket.on 之类的代码无效,因为 foo 是一个 socket.io 对象。传递自定义回调函数也不起作用,因为我无法将其传递给 socket.io 回调。

我不想打 ajax 电话,就像有些人认为的那样。

app.data.user is always null, I also tried a second function to change the variable. The obj returned by the server isn't null, I already checked that.

也就是说有两种可能:

  1. 您正在检查app.data.user 回调发生之前,或者

  2. 即使 obj 不是 null,但 obj.userFound 是错误的,或者 obj.usernull

我的怀疑是 #1:您在回调发生之前检查了值,但是因为您没有在您尝试使用 app.data.user 和获取 [=11= 的地方显示您的代码], 我不能肯定。