0
我有下面的JavaScript對象:JavaScript的AJAX方法:沖洗二傳手
var UsersControl = {
users: null,
fetchData: function() {
$.ajax({
type: "GET",
dataType: "json",
context: this,
url: "../php/client/json.php",
data: {
type: "users"
}
}).done(function(response) {
this.users = response;
});
},
getData: function() {
if (this.users == null) {
this.fetchData();
}
return this.users;
}
};
當我運行getData()
方法,users
場已經被定義,但舊值(null
)在此調用返回。在接下來的調用中,返回適當的值(ajax-ed)。例如JavaScript控制檯會話:
> UsersControl
> Object {users: null, fetchData: function, getData: function}
> UsersControl.getData()
> null
> UsersControl
> Object {users: Array[2], fetchData: function, getData: function}
> UsersControl.getData()
> [Object, Object]
它看起來像的JavaScript記住對象的當前狀態,當一個方法被調用 - 並且該方法結束後所有的狀態改變將被應用。但是這不可能在運行時運行修改對象字段(就像我之前使用的每種OOP語言一樣)。或者,簡單地說,我有一個地方的錯誤。我很感激這個話題的任何提示。
啊哈,我很少用'console.log'看到'AJAX調用已完成之前返回fetchData'。我能做些什麼來使'fetchData'方法等待ajax調用完成? – ducin