我遇到条件符合条件之前执行的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语句,但这会使这不再泛化。有什么想法吗?
克里斯