2017-03-01 107 views
0

我试图在函数(a)完成后调用函数(b)。 但是在功能(a)完成之前会出现警告消息。你的辉煌解决方案将得到尊重。顺序ajax回调函数

$.ajax({ 
    url : "action.do", 
    .....code.... 
}).done(function(a){ 

    ...code... 

}).then(function(b){ 

    alert("hello"); 

}); 
+1

你在函数中做a()..它的任何其他ajax调用? – Darshak

回答

-1

因为当时()总是这样.done()

.done()只有一个回调,这是成功的回调

。后来(前)有成功和失败回调

1

done不能像一个合适的承诺then函数那样工作。要做到这一点,你想使用then并确保从ajax调用,例如返回承诺:

$.ajax({ 
    url : "action.do", 
    // .....code.... 
}).then(function(a){ 
// ^^^^ 
    return $.ajax({ 
// ^^^^^^ 
     url : "action.do", 
     // .....code.... 
    }); 
}).then(function(b){ 
    alert("hello"); 
}); 

我相信你至少需要jQuery的V1.8这一点,但仔细检查你使用的版本,在多个版本中有很多工作要做jQuery的Deferred和承诺与Promises/A +规范和(因此)ES2015(又名“ES6”)规范的承诺兼容。

-1

.then()用于操纵承诺。它有2个回调,成功和失败。这样做的是.then()的成功回调函数。

您可以用两种下列方式修改代码:

$.ajax({ 
    url : "action.do", 
    .....code.... 
}).done(function(a){ 

    ...code... 
    alert("hello"); 
}); 

$.ajax({ 
    url : "action.do", 
    .....code.... 
}).then(function(b){ 

    alert("hello"); 

}); 

理想。那么()就像下面的代码:

.then(function(){ 
    ...success case...(.done() scenario) 
},function(){ 
    ...failure case... (.fail() scenario) 
});