2014-10-28 195 views
3

我有以下JS代碼:javascript函數是同步還是異步?

<script> 
first(); 
second(); 
</script> 

我想確保second()會的first()完全執行後運行。這是預期的默認行爲?

+0

不是更快的嘗試和看到(或很好...檢查JS規格?如果它不是那樣,它與99.99%的語言有很大的區別,然後在doc中突出顯示)... – 2014-10-28 10:43:03

回答

5

這取決於你有你的裏面和first()功能second()什麼..如果你有一些異步調用,first()可以second()後結束。

例如

function first(){ 
    console.log("I'm first"); 
} 
function second(){ 
    console.log("I'm second"); 
} 

first(); 
second(); 

將打印

我第一

我第二

現在假設你在你的first()函數調用Ajax需要10秒才能結束:

function first(){ 
    $.ajax({ 
     //--- blah blah 
     success: function(){ 
      //--- success runs after 10 seconds 
      console.log("I'm first"); 
     } 
    }) 
} 

如果您運行

first(); 
second(); 

你將打印

我第二

我第一

Here你可以找到另一爲例e

+0

現在很清楚..非常感謝:)是的,我有AJAX調用。所以我應該運行第二個函數作爲第一個響應:) – 2014-10-28 12:16:15

1

是的,它是預期的行爲。您也可以定義一些異步函數,如AJAX調用。您還可以定義行爲類似於異步調用檢查該鏈接

http://krasimirtsonev.com/blog/article/7-lines-JavaScript-library-for-calling-asynchronous-functions

http://jsbin.com/AhirAlOV/5/edit?html,js,output

重要:

還記得,JavaScript是不是多線程的語言。 JavaScript將在單個線程中運行,但會以塊的形式執行。所以它將不得不完成它已經排隊的每個代碼塊,然後繼續到下一個塊。您可以通過事件和回調獲得異步調用錯覺

0

Javascript中的大多數函數都是同步的。如果您要連續調用幾個同步函數,則它們將按順序執行。

first(); 
second();  

它們將按順序執行。直到first已完成,second纔會啓動。

-1

Javascript是一種異步語言。他們稱之爲異步語言的原因是在事件的基礎上執行所有函數,在事件處理程序的幫助下,我們確實無法確定事件何時會觸發。它可以是鼠標點擊事件,加載事件等。然而,功能的執行順序發生。只有在第一個函數執行後,第二次啓動。 但請記住,JavaScript是一種異步語言,爲什麼它是這樣調用的。所以要回答你的問題,是的! :)

相關問題