因此,基本上在下面的例子中,如果function1運行,它會等待,直到function2在測試等於1之前運行完成?或者它會在一個獨立的「線程」上運行function2,並在同一時間使測試等於1? (我認爲這就是所謂的,我不太瞭解整個多線程的東西)。函數在繼續之前是否等待被調用的函數完成?
function function1() {
function2();
test = 1;
}
因此,基本上在下面的例子中,如果function1運行,它會等待,直到function2在測試等於1之前運行完成?或者它會在一個獨立的「線程」上運行function2,並在同一時間使測試等於1? (我認爲這就是所謂的,我不太瞭解整個多線程的東西)。函數在繼續之前是否等待被調用的函數完成?
function function1() {
function2();
test = 1;
}
是的,您的function1
將繼續等待function2
返回。但是,您的function2
可能會調用類似setTimeout
的東西,它們本身不會運行,直到function1
完成,但function2
仍然會在function1
繼續之前返回,即使它設置爲在setTimeout
內運行的代碼尚未運行。
setTimeout
(和setInterval
)函數不能在單獨的線程中工作,但它們通過在完成其他所有操作時運行其代碼來僞造它。
這是一個關於如何執行function2()
設置的問題。然而幾乎所有的javascript都是以順序執行的,除非使用setTimeout()
,setInterval()
或其他事件驅動機制來執行。然而,這不是真正的多線程,只是通過等待代碼的其餘部分執行作弊
然而,你有什麼說你執行function2()
然後等待它完成,然後執行test = 1
,你可以差不多想到function2()
的身體被插入function1()
身體的開頭。關鍵字是「幾乎」。但是這應該讓你瞭解JS如何執行。但是,V8(Google的JavaScript引擎)可以支持僞多線程環境。雖然這在技術上可以在工廠JS的正常運行中完成,但它非常快速地變得非常大,以獲得更多信息,請看這Tutorial。
它會等待它然後繼續。 –