什麼是單線程?
單線程:隻有一個線程,同一時間隻能做一件事
原因:避免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。