ajax异步请求执行顺序问题

function test(){
    $.ajax({
          url : window.ctx+"/sys/manager/addUserRole",
          data:formData,
          type : 'post',
          success: function(result){
                testCallback();
              }
        });
    test2();
 }
function testCallback(){
    alert(1)
}
function test2(){
    alert(2)
}

上面这段代码本意是想先alert(1),再alert(2),但因为ajax是异步请求,2会先于1弹出。

解决办法1: 将ajax改为同步请求,但会导致页面加载较慢,失去了ajax本身的优势。

function test(){
    $.ajax({
          url : window.ctx+"/sys/manager/addUserRole",
          data:formData,
          type : 'post',
          async: false,
          success: function(result){
                testCallback();
              }
        });
    test2();
 }
function testCallback(){
    alert(1)
}
function test2(){
    alert(2)
}

解决办法2: 在ajax回调函数中调用test2:

function test(){
    $.ajax({
          url : window.ctx+"/sys/manager/addUserRole",
          data:formData,
          type : 'post',
          success: function(result){
                testCallback();
              }
        });
    //test2();
 }
function testCallback(){
    alert(1)
    test2()
}
function test2(){
    alert(2)
}

你可能感兴趣的:(前端,ajax,javascript,前端)