我想在$.when()
中使用一組變量中的延遲函數。這些函數從服務器獲取數據並將其呈現在DOM中。完成所有這些操作後,會加載一些腳本並執行一些事件後加載操作。
這裏是我使用的是什麼:
function loadAllGames(updateGames, updatePlayoffs) {
var deferredLoads = [];
if (updateGames !== false)
deferredLoads.push($.Deferred(loadGames));
if (updatePlayoffs !== false)
deferredLoads.push($.Deferred(loadPlayoffs));
$.when.apply($, deferredLoads).done(loadPostGamesLoadData);
}
的問題是,loadPostGamesLoadData
是永遠不會被調用。
兩個loadGames
和loadPlayoffs
回報承諾:
function loadGames() {
$.get('{% url wave_spinner_template %}', {message: 'Loading games...'}, function (data) {
$('#weeks').html(data);
});
return $.ajax({
url: "{% url weeks season.id %}",
success: function (data) {
$('#weeks').html(data);
},
error: function() {
console.log("Error loading games.");
}
});
}
function loadPlayoffs() {
$.get('{% url wave_spinner_template %}', {message: 'Loading playoffs...'}, function (data) {
$('#playoffs').html(data).children('.spinner-container').addClass('border-top');
});
return $.ajax({
url: "{% url playoffs season.id %}",
success: function (data) {
var $playoffs = $('#playoffs');
if (!$playoffs.length) {
$playoffs = $('<div>', {id: 'playoffs'});
$('#weeks').after($playoffs);
}
$playoffs.html(data);
},
error: function() {
console.log("Error loading playoffs.");
}
});
}
沒有承諾返回。 – Jai
它返回'$ .ajax',我看到的所有例子都用它來返回promise。我應該怎麼做呢? – dabadaba
將來,只需編輯您之前的問題,而不是完整地提出另一個問題。您可以隨時使用「編輯」鏈接修正您的問題。 – jfriend00