JavaScript的同步異步

單線程的概念
  • java是一門多線程語言,多線程處理各種各樣的事,比如說文件上傳,下載等
  • JavaScript是一門單線程的語言,同一個時間只能做一件事,同個時間有多個任務的話,這些任務就需要進行排隊,前一個任務執行完,纔會執行下一個任務,主要用來實現與用戶的交互
  • 如果JavaScript是多線程的話,一個線程在一個DOM節點增加內容,另一個線程要刪除這個DOM節點,那麼這個DOM節點究竟是要增加內容還是刪除?這會帶來很複雜的同步問題
JavaScript的同步異步

同步任務:主線程上排隊執行的任務,只有前一個任務執行完畢,才能繼續執行下一個任務,打開網站時,網站的渲染過程,
比如:元素的渲染,其實就是一個同步任務;

異步任務:不進入主線程,而進入任務隊列的任務,只有任務隊列通知主線程,某個異步任務可以執行了,該任務纔會進入主線程,當我們打開網站時,
比如:圖片的加載,音樂的加載,其實就是一個異步任務

JavaScript的異步機制

(1)所有同步任務都在主線程上執行,行成一個執行棧
(2)主線程之外,還存在一個任務隊列,只要異步任務有了結果,就會在任務隊列中放置一個事件
(3)一旦執行棧中的所有同步任務執行完畢,系統就會讀取任務隊列,看看裏面還有哪些事件,那些對應的異步任務,於是結束等待狀態,進入執行棧,開始執行
(4)主線程不斷的重複上面的第三步

JavaScript的異步編程

書寫方式:

1、回調函數
2、Promise
3、ES6 Generator迭代器的異步應用
4、Async/Await的異步應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章