我有以下JS代碼:javascript函數是同步還是異步?
<script>
first();
second();
</script>
我想確保second()
會的first()
完全執行後運行。這是預期的默認行爲?
我有以下JS代碼:javascript函數是同步還是異步?
<script>
first();
second();
</script>
我想確保second()
會的first()
完全執行後運行。這是預期的默認行爲?
這取決於你有你的裏面和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
現在很清楚..非常感謝:)是的,我有AJAX調用。所以我應該運行第二個函數作爲第一個響應:) – 2014-10-28 12:16:15
是的,它是預期的行爲。您也可以定義一些異步函數,如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將在單個線程中運行,但會以塊的形式執行。所以它將不得不完成它已經排隊的每個代碼塊,然後繼續到下一個塊。您可以通過事件和回調獲得異步調用錯覺
Javascript中的大多數函數都是同步的。如果您要連續調用幾個同步函數,則它們將按順序執行。
first();
second();
它們將按順序執行。直到first
已完成,second
纔會啓動。
Javascript是一種異步語言。他們稱之爲異步語言的原因是在事件的基礎上執行所有函數,在事件處理程序的幫助下,我們確實無法確定事件何時會觸發。它可以是鼠標點擊事件,加載事件等。然而,功能的執行順序發生。只有在第一個函數執行後,第二次啓動。 但請記住,JavaScript是一種異步語言,爲什麼它是這樣調用的。所以要回答你的問題,是的! :)
不是更快的嘗試和看到(或很好...檢查JS規格?如果它不是那樣,它與99.99%的語言有很大的區別,然後在doc中突出顯示)... – 2014-10-28 10:43:03