首頁 > web前端 > js教程 > 簡單談談JavaScript的同步與非同步_javascript技巧

簡單談談JavaScript的同步與非同步_javascript技巧

WBOY
發布: 2016-05-16 15:22:36
原創
1197 人瀏覽過

1.手繪一張圖說明。

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

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

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

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

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

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

為了利用多核心CPU的運算能力,HTML5提出Web Worker標準,允許JavaScript腳本建立多個線程,但是子執行緒完全受主執行緒控制,且不得操作DOM。

所以,這個新標準並沒有改變JavaScript單執行緒的本質。

傳送門:JavaScript運作機制之事件循環(Event Loop)詳解

3.JavaScript的非同步體現在哪

如一開始的圖,個人認為左邊主執行緒就是同步,左邊事件佇列(訊息佇列)就是非同步。

當然JavaScript中的非同步有很多:

Ajax(XMLHttpRequest)
Image Tag,Script Tag,iframe(原理类似)
setTimeout/setInterval
CSS3 Transition/Animation
postMessage
Web Workers
Web Sockets
and more…
登入後複製

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板