我已经设置了一段代码来检查条件,并根据该条件执行ajax调用以获取JSON对象,或者继续进行其他形式的处理。处理完毕后,我会根据if / else语句中处理的数据做一些事情。
然而,我遇到了一个问题。代码执行if / else,然后在.get完成处理之前继续,因此我的最后一段代码无法正常工作。有没有办法延迟处理其余代码,直到.get完成?我的代码结构如下:
if(filename != undefined){
$.get(filename, function(json){
$.each(json, function(data){
// Do stuff with the json
});
}, "json");
} else {
// Do some other processing
}
// Do some additional processing based on the results from the if/else statement
// This bit is getting processed before the .get has finished doing it's thing
// Therefore there isn't anything for it to act upon
答案 0 :(得分:3)
为其余操作设置一个回调函数:
if(filename != undefined){
$.get(filename, function(json){
$.each(json, function(data){
// Do stuff with the json
doTheRest();
});
}, "json");
} else {
// Do some other processing
doTheRest();
}
function doTheRest(){
// Do some additional processing based on the results from the if/else statement
}
只需记住变量范围,如果必须,请将参数传递给doTheRest
函数。
答案 1 :(得分:1)
使用async: false
的{{1}}选项发出同步请求。 http://api.jquery.com/jQuery.ajax/
注意:
@Neal:“这并不总是最好的选择。特别是如果ajax请求挂起太长时间。”