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

时间:2015-04-18 08:13:41

标签: javascript node.js asynchronous socket.io

客户代码:

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,我还尝试了第二个函数来更改变量。服务器返回的obj不是null,我已经检查过了。

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

我不会像有些人想的那样做一个ajax电话。

1 个答案:

答案 0 :(得分:0)

  

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

这意味着有两种可能性:

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

  2. 即使obj不是nullobj.userFound也是假的,或者obj.usernull

  3. 我的怀疑是#1:你在回调发生之前检查了价值,但是因为你没有在你尝试使用app.data.user并获得null的地方展示你的代码,我不能肯定地说。