當前位置:編程學習大全網 - 編程語言 - js大量數據計算導致頁面假死

js大量數據計算導致頁面假死

為什麽頁面會卡頓呢,以60Hz為例,即壹秒鐘的動畫就是由60張靜態圖片連在壹起。60fps是動畫播放比較理想、比較基礎的要求,windows系統有個刷新頻率也是這個意思。60fps就要求壹幀的時間為1s/60=16.67ms。瀏覽器顯示頁面的時候,要處理js邏輯,還要做渲染,每個執行片段的時間不能超過16.67ms。實際上,瀏覽器內核自身支撐體系運行也需要消耗壹些時間,所以留給我們的時間差不多只有10ms。並且在處理js計算時,瀏覽器不會響應用戶的操作,所以就造成了頁面“假死”。

Web Work,就是為JavaScript創造多線程環境,允許主線程創建Web Worker線程,將壹些任務分配給後臺運行。在主線程運行的同事,Work線程在後臺運行,兩者互不幹擾。等到Work線程完成計算任務再把結果返回給主線程。這樣的好處是,壹些密集或者高延遲的計算任務,被Work線程給分擔了,這樣主線程就會很流程。

Worker線程壹旦創建成功,就會始終運行,不會被主線程上的活動打斷取消。這樣有利於隨時響應主線程的通信。但是,這也造成了Worker比較耗費資源,不應該過度使用,所以壹旦使用完畢,就應該關閉。

1.同源限制:分配給Worker線程運行的腳本文件,必須與主線程的腳本文件同源。

2.DOM限制:Work線程所在的全局對象和主線程不壹樣,所以無法讀取主線程所在網頁的DOM對象,也無法使用document,window,parent這些對象。但是可以使用navigator和location。

3.通信聯系:Worker線程和主線程不在同壹個上下文環境,他們不能直接通信,必須通過消息完成。

4.腳本限制:Worker線程不能執行alert和confirm方法,但是可以使用XMLHttpRequest對象發出的AJAX請求。

5.文件限制:Work線程不能讀取本地文件,它所加載的腳本必須來自網絡。

  • 上一篇:少女時代照片裏的這個人是誰?請寫下妳的名字和信息~
  • 下一篇:公路號(公路號)
  • copyright 2024編程學習大全網