摘要:對于執(zhí)行時(shí)間過長的腳本,有的瀏覽器會(huì)彈出警告,說頁面無響應(yīng)。一個(gè)代碼塊長時(shí)間運(yùn)行,將會(huì)導(dǎo)致其他任何任務(wù)都必須等待。而其他瀏覽器,比如上的瀏覽器,將默認(rèn)終止運(yùn)行時(shí)間超過秒鐘的腳本。利用定時(shí)器來分解任務(wù),關(guān)鍵點(diǎn)有兩個(gè)。實(shí)際上每行耗時(shí)約左右。
對于執(zhí)行時(shí)間過長的腳本,有的瀏覽器會(huì)彈出警告,說頁面無響應(yīng)。有的瀏覽器會(huì)直接終止腳本??偠灾?,瀏覽器不希望某一個(gè)代碼塊長時(shí)間處于運(yùn)行狀態(tài),因?yàn)閖s是單線程的。一個(gè)代碼塊長時(shí)間運(yùn)行,將會(huì)導(dǎo)致其他任何任務(wù)都必須等待。從用戶體驗(yàn)上來說,很有可能發(fā)生頁面渲染卡頓或者點(diǎn)擊事件無響應(yīng)的狀態(tài)。
如果一段腳本的運(yùn)行時(shí)間超過5秒,有些瀏覽器(比如Firefox和Opera)將彈出一個(gè)對話框警告用戶該腳本“無法響應(yīng)”。而其他瀏覽器,比如iPhone上的瀏覽器,將默認(rèn)終止運(yùn)行時(shí)間超過5秒鐘的腳本。--《JavaScript忍者秘籍》
JavaScript忍者秘籍里有個(gè)很好的比喻:頁面上發(fā)生的各種事情就好像一群人在討論事情,如果有個(gè)人一直在說個(gè)不停,其他人肯定不樂意。我們希望有個(gè)裁判,定時(shí)的切換其他人來說話。
Js利用定時(shí)器來分解任務(wù),關(guān)鍵點(diǎn)有兩個(gè)。
按什么維度去分解任務(wù)
任務(wù)的現(xiàn)場保存與現(xiàn)場恢復(fù)
例子要求:動(dòng)態(tài)創(chuàng)建一個(gè)表格,一共10000行,每行10個(gè)單元格
一次性創(chuàng)建總共耗時(shí)180ms, 瀏覽器已經(jīng)給出警告![Violation] "setTimeout" handler took 53ms。
分批次動(dòng)態(tài)創(chuàng)建這次異步按批次創(chuàng)建,沒有耗時(shí)的警告。因?yàn)榭刂屏嗣看未a在50ms內(nèi)運(yùn)行。實(shí)際上每80行耗時(shí)約10ms左右。這就不會(huì)引起頁面卡頓等問題。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82261.html
摘要:接下來看下偽代碼調(diào)度算法偽代碼原來這段寫的匆忙且不好,重新更新了一篇講調(diào)度算法的大概實(shí)現(xiàn)性能改善的原理二。 問題背景 React16 更新了底層架構(gòu),新架構(gòu)主要解決更新節(jié)點(diǎn)過多時(shí),頁碼卡頓的問題。譬如如下代碼,根據(jù)用戶輸入的文字生成10000行數(shù)據(jù),用戶輸入框會(huì)出現(xiàn)卡頓現(xiàn)象。 class App extends React.Component { constructor( prop...
摘要:解析首先簡稱是由歐洲計(jì)算機(jī)制造商協(xié)會(huì)制定的標(biāo)準(zhǔn)化腳本程序設(shè)計(jì)語言。級在年月份成為的提議,由核心與兩個(gè)模塊組成。通過引入統(tǒng)一方式載入和保存文檔和文檔驗(yàn)證方法對進(jìn)行進(jìn)一步擴(kuò)展。其中表示的標(biāo)記位正好是低三位都是。但提案被拒絕了。 JS高級入門教程 目錄 本文章定位及介紹 JavaScript與ECMAScript的關(guān)系 DOM的本質(zhì)及DOM級介紹 JS代碼特性 基本類型與引用類型 JS的垃...
摘要:異步如果在函數(shù)返回的時(shí)候,調(diào)用者還不能購得到預(yù)期結(jié)果,而是將來通過一定的手段得到例如回調(diào)函數(shù),這就是異步。的意思是,將回調(diào)函數(shù)立刻插入消息隊(duì)列,等待執(zhí)行,而不是立即執(zhí)行。 大家好,我是wmingren,小伙伴們都知道JavaScript是單線程的語言,所謂的單線程呢就是指如果有多個(gè)任務(wù)就必須去排隊(duì),前面任務(wù)執(zhí)行完成后,后面任務(wù)再執(zhí)行。到這里我們就產(chǎn)生了一個(gè)疑問,既然是單線程的,又怎么會(huì)...
摘要:大多數(shù)情況下,對一個(gè)直接量和一個(gè)局部變量數(shù)據(jù)訪問的性能差異是微不足道的。 前端性能優(yōu)化之 JavaScript 前言 本文為 《高性能 JavaScript》 讀書筆記,是利用中午休息時(shí)間、下班時(shí)間以及周末整理出來的,此書雖有點(diǎn)老舊,但談?wù)摰男阅軆?yōu)化話題是每位同學(xué)必須理解和掌握的,業(yè)務(wù)響應(yīng)速度直接影響用戶體驗(yàn)。 一、加載和運(yùn)行 大多數(shù)瀏覽器使用單進(jìn)程處理 UI 更新和 JavaScri...
摘要:案例每隔毫秒調(diào)用函數(shù)并顯示時(shí)間。當(dāng)點(diǎn)擊按鈕時(shí),停止時(shí)間代碼如下計(jì)時(shí)器每隔毫秒調(diào)用函數(shù),并將返回值賦值給計(jì)時(shí)器計(jì)時(shí)器,在載入后延遲指定時(shí)間后去執(zhí)行一次表達(dá)式僅執(zhí)行一次。該值標(biāo)識要取消的延遲執(zhí)行代碼塊。 簡述 本系列將持續(xù)更新Javascript基礎(chǔ)部分的知識,誰都想掌握高端大氣的技術(shù),但是我覺得沒有一個(gè)扎實(shí)的基礎(chǔ),我認(rèn)為一切高階技術(shù)對我來講都是過眼云煙,要成為一名及格的前端工程師,必須把...
閱讀 2059·2021-09-07 10:14
閱讀 1491·2019-08-30 15:53
閱讀 2278·2019-08-30 12:43
閱讀 2870·2019-08-29 16:37
閱讀 765·2019-08-26 13:29
閱讀 2009·2019-08-26 13:28
閱讀 450·2019-08-23 18:33
閱讀 3532·2019-08-23 16:09