Async-Ajax-Aufruf funktioniert nicht wie erwartet

Konfiguration:

Ich mache einen Ajax-Jsonp-Anruf, der gut funktioniert. Die Rückruffunktion ändert den Wert einer Variablen "myVaraible". Direkt nach dem Aufruf gibt es eine If-else-Logik, die mit dem Wert von "myVaraible" arbeitet.

Hier ist der Code:

    <script>
        function myfunction() {
            $.ajax({
                url: myURL,
                dataType: "jsonp",
                jsonp : "jsonp",
                async: false,
                jsonpCallback: "jsonpCallbackFn"
            });
        }

        function jsonpCallbackFn(mydata) { 
            alert("inside jsonpCallbackFn");
            if(something) {
                // change value of a variable "myVariable";
            }
        }

        $(document).ready(function() {
            $("#preview_button").mouseover(function() {
                myfunction();

                alert("after myfunction");
                // do some if-else logic based upon the value of myVariable which is updated by the call to myfunction()
            });
        });
    </script>

Das Problem:

Der Ajax-Aufruf bleibt 'anstehend', die Steuerung wechselt zum if-else-Block (der effektiv mit dem alten / veralteten Wert von myVariable ausgeführt wird). Und dann ist der Ajax-Aufruf abgeschlossen. Kurz gesagt, von den 2alert kästen,alert("after myfunction"); führt zuerst und dann ausalert("inside jsonpCallbackFn");

Wie Sie sehen können, habe ich bereits eingestelltasync: false,, sieht aber so aus, als würde das nicht wie erwartet funktionieren. Kann mir jemand sagen, was ich falsch mache? Ich bin mir auch nicht sicher, ob ich das gesamte Szenario richtig erklärt habe. Bitte teilen Sie mir mit, ob weitere Informationen benötigt werden.

Danke vielmals.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage