从 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.
也就是说有两种可能:
您正在检查app.data.user
回调发生之前,或者
即使 obj
不是 null
,但 obj.userFound
是错误的,或者 obj.user
是 null
我的怀疑是 #1:您在回调发生之前检查了值,但是因为您没有在您尝试使用 app.data.user
和获取 [=11= 的地方显示您的代码], 我不能肯定。
客户代码:
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 alwaysnull
, I also tried a second function to change the variable. Theobj
returned by the server isn'tnull
, I already checked that.
也就是说有两种可能:
您正在检查
app.data.user
回调发生之前,或者即使
obj
不是null
,但obj.userFound
是错误的,或者obj.user
是null
我的怀疑是 #1:您在回调发生之前检查了值,但是因为您没有在您尝试使用 app.data.user
和获取 [=11= 的地方显示您的代码], 我不能肯定。