2013-05-15 126 views
2

因此,基本上在下面的例子中,如果function1運行,它會等待,直到function2在測試等於1之前運行完成?或者它會在一個獨立的「線程」上運行function2,並在同一時間使測試等於1? (我認爲這就是所謂的,我不太瞭解整個多線程的東西)。函數在繼續之前是否等待被調用的函數完成?

function function1() { 
    function2(); 
    test = 1; 
} 
+0

它會等待它然後繼續。 –

回答

1

不,它會等待function2完成。

有辦法可以做多線程,但他們需要一些工作,請參閱here瞭解一些額外的信息。

+0

謝謝你這麼快速的回答!是否有某種方法或技術可以同時運行function2和test = 1? – Cains

+0

@凱恩斯,請點擊鏈接:-) – paxdiablo

2

是的,您的function1將繼續等待function2返回。但是,您的function2可能會調用類似setTimeout的東西,它們本身不會運行,直到function1完成,但function2仍然會在function1繼續之前返回,即使它設置爲在setTimeout內運行的代碼尚未運行。

setTimeout(和setInterval)函數不能在單獨的線程中工作,但它們通過在完成其他所有操作時運行其代碼來僞造它。

2

這是一個關於如何執行function2()設置的問題。然而幾乎所有的javascript都是以順序執行的,除非使用setTimeout(),setInterval()或其他事件驅動機制來執行。然而,這不是真正的多線程,只是通過等待代碼的其餘部分執行作弊

然而,你有什麼說你執行function2()然後等待它完成,然後執行test = 1,你可以差不多想到function2()的身體被插入function1()身體的開頭。關鍵字是「幾乎」。但是這應該讓你瞭解JS如何執行。但是,V8(Google的JavaScript引擎)可以支持僞多線程環境。雖然這在技術上可以在工廠JS的正常運行中完成,但它非常快速地變得非常大,以獲得更多信息,請看這Tutorial

相關問題