2017-03-01 93 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) 
});