天天看點

單線程

什麼是單線程?

單線程:隻有一個線程,同一時間隻能做一件事

原因:避免DOM渲染的沖突

解決方案:異步

單線程demo1

定義一個循環,循環很多次,再列印一個結果,循環那麼多次,很耗費時間,在循環過程中,浏覽器處于卡頓狀态

單線程demo2

不點彈框的确認,不繼續走,浏覽器卡頓

不執行完是不會走下一步的。為什麼會有單線程,像後端開發,java,c#都有多線程,可以這個線程做這個,哪個線程做哪個,同時多個線程,做多件事情。但是為什麼JS隻能是單線程,而且和浏覽器渲染是同一個線程。原因就是避免dom渲染沖突,

那怎麼辦呢?也不能一直卡那,很多情況下,我們是不需要等在那裡的。

解決方案-異步。

如果是單線程,1秒鐘就在那等着,浏覽器卡在那,js也不執行,也關掉,電腦在那呼呼的轉。肯定不科學。那麼js異步是什麼,就是我先列印100,然後1s鐘後列印200。我先不管,反正1s以後再執行,先列印300,400,列印之後。還有個1s之後列印200,那麼再1s之後列印200.

也是異步,先把該執行的執行完了,再做定時不定時的等待。不是異步的都執行完了,再看異步中的任務。

那麼怎麼樣通過我們先不管,後面再執行,這種真實的實作是怎麼樣的。這個時候就是事件輪詢的過程

現在異步的解決方案還是有一些問題

1、沒按照書寫方式執行,可讀性差

2、callback中不容易子產品化,回過頭來執行,上面的ajax,success就是callback。

繼續閱讀