我有一個類似於下面的函數:處理Deferrred與異步AJAX調用
function refreshData() {
service.getSettings().done(function (settings) {
// DATA 1
service.getData1(settings).done(function (result) {
// do something local with result
// partial resolve 1
});
// DATA 2
var localData = service.getLocalData();
if (localData.length) {
service.getData2(settings, localData).done(function (result) {
// do something local with result
// partial resolve 2
});
} else {
$('#list').empty();
// or partial resolve 2
}
});
}
我想要做的就是創建此功能,所以一個Deferred對象我知道什麼時候該數據刷新完全完成。我知道我可以用$.when
將它們連在一起,但我希望兩個AJAX調用獨立運行,我不在乎一個是否在另一個之前完成。
我已經在上面標記了每件要解決的問題。我只是不知道如何完成這一點。
我的最終目標會是這樣一個電話:
refreshData().done(function() {
// hide loader
});
您需要'def1'和'def2'獨立deferreds。不能使用像你這樣的同一個人。也許也可以使用現有的承諾,而不是創建新的承諾。 – jfriend00
@ jfriend00謝謝隊友,我知道會有比這更好的解決方案,但當時並沒有打動我。 * Roamer-1888的*實際上是優雅的。編輯ans以指定單獨的延期。 –