我有这个对象(这只是它的一部分,显然......):
function room() {
this.data = {
sender_name: '',
room_id: 0
}
this.create = function (sender_name) {
// (code to set this.data)
this.removeTimer();
}
this.removeTimer = function() {
var t = this;
console.log(t.data.sender_name) // log #1
$.tGet('roomInfo', {'room_id': this.data.room_id}, function(edata) {
console.log(t.data.sender_name) // log #2
if(edata.exists == 'false') {
// remove room code...
}
else {
setTimeout(function() {
t.removeTimer();
}, 1000)
}
})
};
}
我像这样从数据库创建它的实例:
$.tGet('getRooms', {'user_id': mUser}, function(edata) {
var i = 0, n;
for(i = 0; i<edata.length; i++) {
n = new room();
n.create(edata[i].sender_name);
}
})
现在,问题是控制台打印的只是最后一个创建的房间。我不知道发生了什么...
此代码第一次运行时,日志 #1 是完全正确的。但是,日志 #2 已经存在问题,因为它只给了我数据库中的最后一个空间(或在循环中......),当然,在超时后日志 #1 也变得错误。
这是怎么回事?我真的只是 javascript 的初学者,所以......
tGet
功能:
$.tGet = function(action, data, callback, error) {
$.get('php/ajax.php?action='+action, data, callback, 'json').fail(error);
}