J'essaie d'utiliser un ensemble variable de fonctions différées dans un tableau avec $.when()
. Ces fonctions récupèrent les données du serveur et les restituent dans le DOM. Après tout ce qui est fait, certains scripts sont chargés et quelques actions de post-chargement sont effectuées.
Voici ce que je suis en utilisant:
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);
}
Le problème est que loadPostGamesLoadData
est jamais appelée.
Les deux loadGames
et loadPlayoffs
promesses retour:
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.");
}
});
}
Il n'y a pas de promesses retournées. – Jai
il retourne '$ .ajax', tous les exemples que j'ai vus l'ont utilisé pour le retour des promesses. Que devrais-je faire à la place? – dabadaba
Dans l'avenir, il suffit de modifier votre question précédente à laquelle était assez incomplète plutôt que de faire toute une autre question. Vous pouvez utiliser le lien "modifier" pour corriger votre question à tout moment. – jfriend00