0
Node.jsの非同期性に問題がありますか?ノードはセッションIDを取得できません
var SessionID, Session;
IO.sockets.on('connection', function (client) {
SessionID = client.handshake.headers.cookie;
Session = GetSession(SessionID);
console.log(Session); // here, Session is all the undefined values
});
その後GetSession()
関数として示されている:私はそうのように、Memcacheの経由でPHPのセッションをフェッチしているコードの一部を持っている
function GetSession(SessionID) {
var Session = [];
// Define a default value for all Session values so undefined warnings aren't thrown for non-members
Session = [];
Session['MemberID'] = 0;
Session['MemberEmail'] = undefined;
Session['MemberPass'] = undefined;
// Make sure SessionID has been stripped down to just PHP Session ID
if (SessionID.split(';').length > 1) {
var parts = SessionID.split(';');
var vals = [];
var thisPart, subParts;
for(var k = 0; k < parts.length; k++) {
thisPart = parts[k];
if (thisPart.indexOf('PHPSESSID') >= 0) {
subParts = thisPart.split('=');
if (subParts.length > 1)
SessionID = subParts[1];
}
}
}
// Get session vars from Memcache
MemCache.get('Session-'+SessionID, function(err,result){
Session = JSON.parse(result);
console.log(Session); // here, Session prints the correct values
});
return Session;
}
Session
に依存しているすべての私のコードを投げ議論GetSession()
関数に渡されたコールバックに変換されますが、それは不必要に乱雑です。