2016-09-26 24 views
-1

執行時抓取的網頁與GET,我看到foo()之前執行bar()。爲什麼?我怎樣才能讓他們按照書面順序執行?內嵌的JavaScript代碼並不書面命令

對於jQuery Ajax更新:腳本以書面順序執行,即foo()之前bar()

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

你提的AJAX,但我沒有看到任何使用AJAX的代碼。您的代碼在編寫時會按順序執行。 –

+1

如果它是ajax,那麼就不能保證響應的順序是什麼。這就是ajax中的A - 異步。假設這兩個請求對同一臺服務器做同樣的事情,那麼網絡之神決定首先回應哪個響應。 –

回答

-3

結束語在$您的JS(...)意味着它會在文檔準備好運行,雖然有它使優化,JS運行的時間依次爲99.99%(除非編譯器是比我們更聰明,其中.01%是)。

一兩件事,可以幫助你在這種情況下...

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

即使這樣也可能無助於foo()和bar()進行異步調用。這就是異步調用的要點:) –

+0

這看起來並不正確。 [源代碼](http://stackoverflow.com/a/3934584/111266) –

+0

JS *是*按順序運行。如果你不能指望,那幾乎沒有理由編程!異步操作可能以任何順序運行,但完全取決於它們的完成時間。 –

0

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

+0

沒有區別。每個'