第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

大批量DOM操作如何提升性能

大批量DOM操作如何提升性能

開滿天機(jī) 2019-02-15 15:11:27
STARTQ:很簡單的一個(gè)業(yè)務(wù),用JS實(shí)現(xiàn)一個(gè)通訊錄的列表顯示。具體描述:1.A-Z+#,一共27個(gè)DOM對象,假設(shè)有1000條數(shù)據(jù),我要根據(jù)數(shù)據(jù)中的姓名往這27個(gè)DOM對象中添加,請問如何可以最高效的實(shí)現(xiàn),頭像可以后加載因此這里不考慮。2.拒絕setTimeout來實(shí)現(xiàn)3.因?yàn)橐謩e往多個(gè)DOM對象中進(jìn)行DOM操作,所以除了創(chuàng)建多個(gè)DocumentFragment來實(shí)現(xiàn)外,是否有其他方法來提高性能。4.個(gè)人嘗試使用Promise來實(shí)現(xiàn),然而并沒有起到想要的結(jié)果。5.代碼如下:var index = "ABCDEFGHIJKLMNOPQRSTUVWXYZ#";for (var i in data) {    if (index.indexOf(data[i].per_allpinyin[0].toUpperCase()) >= 0) {        document.getElementById(data[i].per_allpinyin[0].toUpperCase()).appendChild(dataname(i));    } else        document.getElementById("#").appendChild(dataname(i));}6.因?yàn)镈OM的操作永遠(yuǎn)是同步渲染的,因此在數(shù)據(jù)>1000的時(shí)候,頁面的渲染會(huì)有些卡頓,因此尋求幫助。ENDfirst ADD:感謝幾個(gè)大大關(guān)于分批次的建議,不過我之前忘記補(bǔ)充了。7.因?yàn)橛覀?cè)有一個(gè)快捷側(cè)邊欄,可以實(shí)現(xiàn)用戶點(diǎn)擊首字母馬上跳轉(zhuǎn),因此分批次實(shí)現(xiàn)的話就會(huì)造成一個(gè)很糟糕的用戶體驗(yàn),即用戶點(diǎn)擊Z側(cè)邊欄的時(shí)候,卻發(fā)現(xiàn)Z的數(shù)據(jù)還沒有加載進(jìn)來,所以處于業(yè)務(wù)需求,暫時(shí)不會(huì)考慮分批次。包括按首字母分批次和按數(shù)據(jù)分批次
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

這兩天又用了各種方法嘗試了下
1.發(fā)現(xiàn)同步操作的話,還是documentfragment效率最高,但是同步加載的情況下,加載過程中渲染的卡頓還是無可避免。
2.如果使用setTimeout或者requestAnimateFrame來達(dá)到異步實(shí)現(xiàn)的話,會(huì)造成后面綁定事件的業(yè)務(wù)變動(dòng),而且對于非動(dòng)畫操作,其實(shí)兩者效率差不多,每秒60幀也已經(jīng)是極限了。這樣的幀數(shù)下,用遞歸實(shí)現(xiàn)的話,1000條數(shù)據(jù)就需要至少20+s才能加載完成,不過DOM的渲染會(huì)較為流暢,然而不管是側(cè)邊欄和還是用戶滾動(dòng)操作都不符合本業(yè)務(wù),所以放棄。
3.其實(shí)DOM的生成還是較快的,1k+條數(shù)據(jù)的生成大概在1s-2s之間就可以完成,主要還是后續(xù)事件綁定的代碼會(huì)影響單進(jìn)程的JS執(zhí)行,導(dǎo)致頁面渲染變慢。
END:所以最終DOM上還是采用多documentfragment來實(shí)現(xiàn),而后續(xù)事件句柄則采用setTimeout來異步加載,使得界面先生成而事件綁定不影響頁面的渲染。
PS:最后感謝大家的幫忙,希望我所發(fā)現(xiàn)的這個(gè)問題可以幫到大家

查看完整回答
反對 回復(fù) 2019-02-19
  • 1 回答
  • 0 關(guān)注
  • 496 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號