La llamada async-ajax no funciona como se esperaba

Preparar:

Estoy haciendo una llamada ajax-jsonp, que funciona bien. La función de devolución de llamada de esto cambia el valor de una variable, "myVaraible". Justo después de la llamada, hay alguna lógica if-else que funciona con el valor de "myVaraible".

Aquí está el código:

    <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>

El problema:

La llamada ajax permanece 'pendiente', el control se mueve al bloque if-else (ejecutándose efectivamente en el valor antiguo / obsoleto de myVariable). Y luego se completa la llamada ajax. En definitiva, de los 2.alert cajasalert("after myfunction"); ejecuta primero y luegoalert("inside jsonpCallbackFn");

Como se puede ver, ya he configuradoasync: false,, pero parece que no está funcionando como se esperaba. ¿Alguien puede decirme que estoy haciendo mal? Además, no estoy seguro de haber explicado correctamente todo el escenario; por favor, avíseme si se necesita más información.

Muchas gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta