2015-11-06 92 views
0

我知道有很多類似的問題,但我正在尋找關於特定場景的反饋。異步執行的Javascript順序

比方說,我有一個頁面,包含下面的代碼:

<script> 
    var myCallback = function() { 
     // stuff... 
    } 
</script> 

<script async src="https://example.com/file.js?callback=myCallback"></script> 

<script> 
    var obj = { 
    render: function() { 
     this.funcA(); 
     this.funcB(); 
     this.funcC(); 
    }, 

    funcA: function() { 
     // stuff 
    }, 

    funcB: function() { 
     // stuff 
    }, 

    funcC: function() { 
     // stuff 
    } 
    } 

    obj.render(); 
</script> 

外部腳本設置在加載後打電話到「myCallBack函數」。

可能myCallback可以調用,而obj.render()正在執行,還是會一直等到render及其所有子功能被調用?

換句話說,有可能是myCallback某個時候在funcAfuncB執行之間的調用,funcC還是會一直等到他們都執行?

+0

學習事件循環的時間 – Lucius

+0

這就是我要求的。我認爲儘快渲染被調用,那麼它的所有子函數將被添加到事件循環中,因此當腳本返回時,myCallback將被放置在它們之後。是對的嗎? – flyingL123

+0

在您發佈的代碼中,'myCallback'永遠不會被調用 –

回答

0

您無法確定何時異步完成。最有可能在obj.render()之後,因爲啓動異步過程需要一段時間。 與此同時,處理obj.render的代碼。 但取決於這樣的代碼流看起來像棘手的業務。 讓我們假設異步代碼由於被緩存而被立即加載 - 那麼它可能會在代碼運行之前或之後運行。