Comment puis-je obtenir de rendre l'exécution de code JavaScript à attendre jusqu'à ce qu'une requête AJAX avec le script est chargé et exécuté?

Dans mon application, j'utilise Ext.Ajax.request pour charger les scripts qui je l'execute avec eval.

Le problème est que depuis qu'il prend du temps pour la requête AJAX pour terminer, le code qui est exécuté par la suite qui a besoin de variables qui sont dans le script chargé via AJAX. Dans cet exemple, je montre comment c'est le cas. Comment puis-je modifier ce code afin que l'exécution du JavaScript après l'AJAX attend jusqu'à ce que le script dans l'appel AJAX a été chargé et exécuté?

testEvalIssue_script.htm:

<script type="text/javascript">
    console.log('2. inside the ajax-loaded script');
</script>

main.htm:

<html>
    <head>
        <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="ext/ext-all-debug.js"></script>
        <script type="text/javascript">
            function loadViewViaAjax(url) {
                Ext.Ajax.request({
                    url: url,
                    success: function(objServerResponse) {
                        var responseText = objServerResponse.responseText;
                        var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
                        while(scripts=scriptsFinder.exec(responseText)) {
                            eval.call(window,scripts[1]);
                        }
                    }
                });
            }

            console.log('1. before loading ajax script');
            loadViewViaAjax('testEvalIssue_script.htm');
            console.log('3. after loading ajax script');
        </script>
    </head>
    <body>

    </body>

</html>

de sortie:

1. before loading ajax script
3. after loading ajax script
2. inside the ajax-loaded script

Comment puis-je obtenir la sortie pour être dans le bon ordre, comme ceci:

1. before loading ajax script
2. inside the ajax-loaded script
3. after loading ajax script
  • En mettre 2. 3. est et mettre 3. d'où 2. est?
  • Appel d'une fonction après la requête AJAX complète et de montrer un " Chargement..' message pour l'utilisateur?