js異步執行原理


 

我們都知道js是一個單線程的語言,所以沒辦法同時執行倆個進程。所以我們就會用到異步。

異步的形式有哪些那,es5的回調函數。es6的promis等

異步的運行原理我們可以先看下面這段代碼

 應該很多人都知道這個打印的值是10個10.

也有知道當我們執行的for循環的時候,他會把for循環執行完成以后再去執行setTimeout,在執行setTimeout的時候這是時候的i已經變成了10所以就打印10個10。

但是這里面的執行過程是這樣的。我們用一個圖來做解釋

 

 圖畫的有點丑啊,大致的執行流程就是這樣。

在js執行的時候,我們在主線程執行的好好的,然后遇到了一個回調函數,然后他會把這個回調函數異步處理,就是放到事假隊列中。

然后我們主線程接着去執行,當主線程執行完成以后,在去執行事件隊列里的函數。然后進行返回。

在事件隊列里,不存在從上到下進行執行。他會看那一個先執行完成,就直接返回那一個。

什么意思呢。我們看下面這個代碼

執行結果為1然后2

 當js執行的時候。這倆個會放進事件隊列。js是從上往下執行。

所以他會先把1放入事件隊列中,然后在放入2.

這就可以看出在事件隊列中,誰先執行完成,就返會誰到主線程上。

這也是異步的一個執行過程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM