2016-09-26 1 views
-1

Lors de l'extraction de la page avec GET, je vois bar() exécuté avant foo(). Pourquoi? Comment puis-je les faire exécuter par ordre écrit? Pour la mise à jour jquery Ajax: les scripts sont exécutés dans l'ordre écrit, c'est-à-dire foo() avant bar().Les balises JavaScript intégrées ne sont PAS exécutées dans l'ordre écrit

<div> 
    <div> 
     <script>$(function(){ foo(); }); </script> 
    </div> 
    <script>$(function(){ bar(); }); </script> 
</div> 
+2

Vous mentionnez AJAX, mais je ne vois pas tout code utilisant AJAX. Votre code, tel qu'il est écrit, sera exécuté dans l'ordre. –

+1

si c'est ajax, alors il n'y a aucune garantie QU'EST-CE que les réponses d'ordre entrent. C'est le A dans ajax - asynchrone. En supposant que les deux requêtes font des choses identiques à des serveurs identiques, il revient aux dieux du réseau de déterminer la réponse qui revient la première. –

Répondre

-3

emballer vos Js $ (...) signifie qu'il sera exécuté sur le document prêt, et bien qu'il y ait des optimisations qu'il fait, js est exécuté de manière séquentielle 99,99% du temps (à moins que le compilateur est plus intelligent que nous , qui dans ce 0,01% est).

Une chose qui pourrait vous aider dans ce cas est ...

<div> 
    <div> 
    ... 
    </div> 
... 
</div> 
<script> 
$(function() { 
    foo(); 
    bar(); 
}; 
</script> 
+0

Même cela peut ne pas aider dans le cas où foo() et bar() font des appels asynchrones. C'est le but des appels asynchrones :) –

+0

Cela ne semble pas être vrai. [source] (http://stackoverflow.com/a/3934584/111266) –

+0

JS * est * exécuté séquentiellement. Si vous ne pouviez pas compter sur cela, il n'y aurait presque aucune raison de programmer dedans! Les opérations asynchrones peuvent s'exécuter dans n'importe quel ordre, car tout dépend de leur fin. –

0

<script> $(function(){ foo(); }); $(function(){ bar(); }); </script>

+0

Il n'y a pas de différence. Chaque balise '