Chamada async-ajax não funciona como esperado

Configuração:

Eu estou fazendo uma chamada ajax-jsonp, que está funcionando bem. A função de retorno de chamada altera o valor de uma variável, "myVaraible". Logo após a chamada, existe alguma lógica if-else que funciona no valor de "myVaraible".

Aqui está o 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>

O problema:

A chamada ajax permanece 'pendente', o controle se move para o bloco if-else (efetivamente executando no valor antigo / antigo de myVariable). E então a chamada do ajax é completada. Em suma, dos doisalert caixas,alert("after myfunction"); executa primeiro e depoisalert("inside jsonpCallbackFn");

Como você pode ver, eu já definiasync: false,, mas parece que não está funcionando como esperado. Alguém pode me dizer o que estou fazendo de errado? Além disso, não tenho certeza se expliquei todo o cenário corretamente, por favor, deixe-me saber se mais alguma informação é necessária.

Muito obrigado.

questionAnswers(2)

yourAnswerToTheQuestion