所以我有这个JavaScript对象:
var obj = {
conn : null,
first : function(thisIdentity) {
"use strict";
var myObj = this;
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
$.ajax ({
url : some value,
// other parameters
success : function() {
myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
}
});
},
second : function(thisIdentity) {
"use strict";
var myObj = this;
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
$.ajax ({
url : some value,
// other parameters
success : function() {
// using myObj.conn now results in UNDEFINED or NULL
}
});
}
};
现在,在第一个函数的AJAX调用中,基本上将值赋给conn
变量,并且确定了值,但是当我尝试在第二个函数中使用相同的值时,它会声明
myObj.conn未定义/ null
我只是想知道如何为对象的属性赋值并保留它以备将来使用?
我确实尝试在第二个函数中使用this.conn = new Connection(params);
和this.conn
但仍然说this.conn
或myObj.conn
为空。
谢谢!
答案 0 :(得分:-2)
你需要等到第一次ajax调用结束,试试这个:
var obj = {
conn : null,
promise: null,
first : function(thisIdentity) {
"use strict";
var myObj = this;
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
myObj.promise = $.ajax({
url : some value,
// other parameters
success : function() {
myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
}
});
});
},
second : function(thisIdentity) {
"use strict";
var myObj = this;
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
if (myObj.promise) {
myObj.promise.then(function() {
$.ajax({
url : some value,
// other parameters
success : function() {
// using myObj.conn now results in UNDEFINED or NULL
}
});
});
}
});
}
};