1 回答

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è)問題可以幫到大家
添加回答
舉報(bào)