jQuery - 延迟if / else处理直到“.get”调用完成

时间:2011-10-19 14:56:20

标签: jquery ajax

我已经设置了一段代码来检查条件,并根据该条件执行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

2 个答案:

答案 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请求挂起太长时间。”