JavaScript: passar a função como um parâmetro para outra função, o código é chamado em outra ordem, então eu espero

u quero passar uma função para outra função como parâmetr

Eu quero fazer isso porque a última função chama um método Jquery assíncrono e APÓS que devolve um resultado, quero que algum código javascript seja executad

E como essa função é chamada de vários locais, quero que o código seja executado (depois que o código assíncrono do Jquery for executado) seja passado na função. Faz sentido? eu espero :

gora, o que vemos é que a ordem em que o código é executado não é o que eu quero. Simplifiquei o código para este código:

$('#AddThirdParty').click(function() {
    var func = new function() {
        alert('1');
        alert('2');
        alert('3');
    }
    alert('4');
    LoadHtml(func);
    alert('5');
});
function LoadHtml(funcToExecute) {
    //load some async content
    funcToExecute;
}

gora, o que eu queria alcançar (ou pelo menos o que eu pensava que aconteceria) era que o alert4 fosse acionado, o loadhtml dispararia o alert1, alert2 e alert3, e o código retornaria ao alert

Mas o que acontece é: alert1, alert2, alert3, alert4, alert5.

lguém sabe o que estou fazendo de errado e por que essa é a ordem na qual o código é executad

Parece que o alert1..alert3 é executado quando eu defino onew function(), mas por que ele também não é executado quando eu o chamo deLoadHtml função?

questionAnswers(2)

yourAnswerToTheQuestion