So verwenden Sie jQuery Deferred ordnungsgemäß innerhalb einer SchleifeJquery

JQuery-Programmierung
Anonymous
 So verwenden Sie jQuery Deferred ordnungsgemäß innerhalb einer Schleife

Post by Anonymous »

Ich versuche, eine Funktion aufzurufen, die einen Datensatz durchläuft und Werte in diesem Datensatz aus Daten aktualisiert, die von einer asynchronen Funktion stammen. Ich muss natürlich wissen, wann diese Funktion die Schleife abschließt und aktualisiert.
Das ist, was ich derzeit habe:

Code: Select all

function loadStationData() {
var $dfd = $.Deferred();
$.getJSON('../backend/navigation/get-stations.php', function(data) {
stationData = data;
$dfd.resolve();
});
return $dfd.promise();
}

function updateStationData() {
var $dfd = $.Deferred();
$.each(stationData, (i,v) => {
var $dfd2 = $.Deferred();
$.when(getFullCoordPack(v.lat, v.lng)).then(function(coords) {
delete v.lat;
delete v.lng;
v.coords = coords;
$dfd2.resolve();
});
return $dfd2.promise();
});
return $dfd.promise();
}

$.when(loadStationData(), updateStationData()).then(() => {
// do stuff
});
Die Funktion getFullCoordPack(v.lat, v.lng) verwendet die API von What3Words und enthält daher einen AJAX-Aufruf und erfordert daher ein Versprechen, wenn sie abgeschlossen ist.
Ich habe jedoch Schwierigkeiten zu verstehen, wie ich das Deferred-Objekt in der zweiten Funktion verwenden soll, und benötige einige Ratschläge, wie ich mein Ziel am besten erreichen kann. Die erste Funktion funktioniert einwandfrei.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post