jQuery如何才能在所有.done或.fail處理程序之後觸發.always處理程序?jQuery fire .always處理程序全部附加.done/.fail處理程序
舉例來說,如果我有一個返回推遲這樣的功能:
function getDeferred() {
return $.ajax({
url: '/test.json',
type: 'GET',
dataType: 'json',
cache: false
}).fail(function (jqXHR, textStatus, errorThrown) {
alert('fail !');
}).always(function (jqXHR, textStatus, errorThrown) {
alert('always !');
});
}
我可以有一個全球性的。總是處理程序,並附加一個特定.done處理程序是這樣的:
getDeferred().done(function (data, textStatus, jqXHR) {
alert('done !');
});
在jQuery中,處理程序似乎以我們附加它們的相同順序調用。在我的情況下,.done在.done之前。
根據[jQuery .always](https://api.jquery.com/deferred.always/)文檔►'當Deferred被解決或被拒絕時,回調會按照它們添加的順序執行,使用提供的參數。由於''geDeferred()'在額外的'.done'之前解決,所以'.always() getDeferred()'首先被調用。 – Nope
它看起來合法!但是有沒有什麼技巧可以做我想做的事情? –