我遇到條件符合條件之前執行的if語句中的行有問題。我想要做的是:Javascript/jQuery操作順序
- 檢查是否已加載數據(大的舊數組數組)。
- 如果沒有得到它並將其加載到我的all_data對象中。
- 情節數據(或在這種情況下,提醒它)
下面的代碼(剝離的很多細節是可讀的
var all_data={};
function get_data(name,rid) {
if (!all_data[name]) {
return $.get('/data.json',
{'name':name},
function(data) {all_data[name]=data;},
"json");
} else {return true}
}
function load_file(name,rid) {
if (get_data(name,rid)) { alert(all_data[name]) };
}
與上面的代碼會發生什麼事是,當我執行GET_DATA它立即提醒「未定義」,因爲jQuery.get返回一個(尚未完成的)請求對象。此時,條目all_data [name]是未定義的。如果我等待~5s,get請求完成,再次運行代碼將只是警告「[Object Object]」,因爲數據已經加載,我意識到我可以在$ .get回調函數中加入一個函數else語句,但這會使這不再泛化。有什麼想法嗎?
克里斯