我有两个变量来跟踪会话信息。其中一个变量具有超时功能,而另一个没有(用于发送到缓存)。
我从创建变量开始:
//Save Session
sessions.data[sid] = {
'sid': sid,
'socket': null,
'timeout': null
};
//Cache Data
sessions.saved[sid] = { 'sid':sid };
//Save Cache
system.cache.save('sessions', sessions.saved);
//Begin Timeout
sessions.data[sid].timeout = this.timeout.start( sessions.data[sid] );
//Callback
callback( sessions.data[sid] );
添加更多变量并返回到 a save: function(session)
:
//Overwrite session
sessions.data[session.sid] = session;
//Duplicate Session
sessions.saved[session.sid] = $.extend(true,{},session);
//Clear Duplicate Timeout
clearTimeout( sessions.saved[session.sid].timeout );
//Set Values to Null
sessions.saved[session.sid].timeout = null;
sessions.saved[session.sid].socket = null;
//Save Cache
system.cache.save('sessions', sessions.saved);
问题是两个变量(sessions.saved && sessions.data)都会有timeout: null
. 我一直在阅读有关如何阻止它通过引用传递的其他文章,但似乎无法使其正常工作。我读过很多文章,例如:Clone Object without reference javascript but can't get it to work。我也尝试用自己的变量设置它:
var unreferenced = $.extend(true,{},session);
sessions.saved[session.sid] = unreferenced;
但我得到了同样的结果。任何帮助是极大的赞赏 :)