/ / Ist es möglich, eine Ajax-Funktion innerhalb einer jqxhr.done-Funktion auszuführen? - JQuery, JSON, versprich es

Ist es möglich, eine Ajax-Funktion innerhalb einer jqxhr.done-Funktion auszuführen? - JQuery, JSON, versprich es

var json = $.getJSON("sun.json", function(json1) {
$.each(json1, function(key, data) {
//Json Code
});
});
json.done(function() {
$.getJSON("sun2.json", function(json1) {
$.each(json1, function(key, data) {
//More json Code
});
});
});

Wäre es möglich, dies zu tun? Ich möchte etwas mit der ersten JSON-Datei erzeugen, dann, wenn es fertig ist, mache mehr Sachen mit der zweiten JSON-Datei. Ich verstehe nicht, warum es nicht funktionieren würde, aber ich dachte, ich würde hier eine Klarstellung bekommen, nur für den Fall.

Antworten:

3 für die Antwort № 1

Ja, Sie können ausführen $.getJSON innerhalb der .done Funktion.

Das heißt, eine gute Praxis für die Verkettung der $.getJSON Anrufe (Danke an die jquery versprechen Schnittstelle) wäre die Nutzung der then Funktion und könnte so etwas aussehen ...

$.getJSON("sun.json", function(json) {
$.each(json, function(key, data) {
//do something
});
})
.then(function() {
return $.getJSON("sun2.json", function(json) {
$.each(json, function(key, data) {
//do something with sun2.json
});
});
})
.then(function() {
return $.getJSON("sun3.json", function(json) {
$.each(json, function(key, data) {
//so something with sun3.json
});
});
});

Verkettung der aufgeschobenen Versprechen wie diese verhindert die "Rückruf-Pyramide des Schicksals" erlaubt eine flachere und lesbarere Code-Struktur.

NACHTRAG Danke an @BenjaminGruenbaum für das Aufräumen meiner früheren Verwirrung!