dedlfix: JQuery - Kann nicht auf Variable in verschachtelter Funktionen zugreifen

Beitrag lesen

Tach!

Weil die Variable außerhalb nicht bekannt ist, suche ich einen Weg, um diese nach außen zu "übertragen".

Das lass mal lieber. Du könntest das machen, indem du eine globale Variable anlegst und diese dann in der Callback-Funktion befüllst. Das Problem daran ist aber, dass du anderenorts nicht weißt, ob diese Variable bereits gültigen Inhalt hat oder nicht, denn sie wird ja erst nach einer gewissen Zeit befüllt, wenn der Ajax-Request fertig ist und der Callback aufgerufen wurde. Der äußere Code müsste also immer und sicher auch wiederholt prüfen, ob er denn nun mit dem Wert arbeiten kann oder nicht.

Damit holst du dir nur unnötige Komplexität ins Haus. Und wenn du diese Prüfung vergisst, hast du eine Fehlerstelle, die mal auftaucht und mal nicht, je nach zeitlichem Zufall, ob der Ajax-Request bereits durch ist oder nicht.

Deswegen ist diese Idee kein gescheiter Weg. Der bessere ist die Verschachtlung, dass alles, was von diesem Ajax-Request-Ergebnis abhängig ist, in diesem Callback stattfindet oder in Code, der daraus aufgerufen wird.

Solch eine Verschachtlung ist aber auch nicht so toll, weil das den Code nur immer weiter einrückt, und so hat man die Promises erfunden. Die könenn zwar auch nicht zaubern und sind ebenfalls auf diese zeitlichen Abhängigkeiten angewiesen, aber der Code schreibt sich weniger tief geschachtelt. Darauf möchte ich grad aber nicht tiefer eingehen, das ist ein Kapitel für sich. Nur so viel: $.get() unterstützt auch diese Promise-Vorgehensweise.

dedlfix.