Ich versuche, einige Daten in mehreren Funktionen zu erhalten und möchte sie verketten, um die letzte Funktion nur auszuführen, wenn alle Daten ordnungsgemäß geladen wurden.jQuery Funktion Verkettung mit Deferred: .done() - Funktion sofort aufgerufen
Das Problem ist, dass die Funktionen im .done() - Teil sofort aufgerufen werden und nicht warten, bis das Deferred-Object aufgelöst ist. Ich habe es auch versucht, indem ich sie mit .then() verkettet habe, aber das hat auch nicht funktioniert.
var array1, array2;
function doStuffWithReceivedData() {
// Working with the data
}
function getArray1() {
var defArray1 = $.Deferred();
$.getJSON(url, function(data) {
if (data.success) {
array1 = data.payload;
defArray1.resolve();
} else {
// Information displayed that there was an error
}
})
return defArray1;
}
// Function 2 is like the first one
function getArray2() {...};
$(document).read(function() {
getArray1()
.done(getArray2()
.done(doStuffWithReceivedData()));
}
Sie rufen diese Methoden auf und geben ihre Referenzen nicht an. Entfernen Sie die Klammern. –
Verwenden Sie this-- getArray1(). Promise(). Done (function() { doStuffWithReceivedData() }); –
https://stackoverflow.com/questions/15886272/what-is-the-difference-between-a-function-call-and-function-reference – Utkanos