国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

簡單談談JavaScript的同步與異步

2019-11-20 10:53:31
字體:
供稿:網(wǎng)友

1.手繪一張圖說明。

2.為什么JavaScript是單線程(這里引用阮一峰老師的話)

JavaScript的單線程,與它的用途有關。

作為瀏覽器腳本語言,JavaScript的主要用途是與用戶互動,以及操作DOM。

這決定了它只能是單線程,否則會帶來很復雜的同步問題。

比如,假定JavaScript同時有兩個線程,一個線程在某個DOM節(jié)點上添加內(nèi)容,另一個線程刪除了這個節(jié)點,這時瀏覽器應該以哪個線程為準?

所以,為了避免復雜性,從一誕生,JavaScript就是單線程,這已經(jīng)成了這門語言的核心特征,將來也不會改變。

為了利用多核CPU的計算能力,HTML5提出Web Worker標準,允許JavaScript腳本創(chuàng)建多個線程,但是子線程完全受主線程控制,且不得操作DOM。

所以,這個新標準并沒有改變JavaScript單線程的本質(zhì)。

傳送門:JavaScript運行機制之事件循環(huán)(Event Loop)詳解

3.JavaScript的異步體現(xiàn)在哪

如一開始的圖,個人認為左邊主線程就是同步,左邊事件隊列(消息隊列)就是異步。

當然JavaScript中的異步有很多:

Ajax(XMLHttpRequest)Image Tag,Script Tag,iframe(原理類似)setTimeout/setIntervalCSS3 Transition/AnimationpostMessageWeb WorkersWeb Socketsand more…

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 达孜县| 马山县| 马山县| 武汉市| 邢台市| 察隅县| 仁怀市| 天门市| 西贡区| 郧西县| 古蔺县| 新宁县| 灵寿县| 吉安县| 巴彦县| 潮州市| 拉孜县| 方城县| 陆良县| 会昌县| 岳西县| 洛宁县| 庐江县| 莱阳市| 敖汉旗| 伊川县| 车险| 宝兴县| 肥东县| 柘城县| 阜阳市| 门源| 雷州市| 呼伦贝尔市| 南投市| 海安县| 阜新市| 霍州市| 南木林县| 仪陇县| 徐汇区|