window.onresize = function() {
clearTimeout(re);
re = setTimeout(resize,100);
};
第二個(gè)問(wèn)題在于如果每次有新的數(shù)據(jù)加載,都要對(duì)整個(gè)容器內(nèi)的節(jié)點(diǎn)進(jìn)行重排,非常消耗性能。解決思路:
1.將列保存在全局?jǐn)?shù)組中,每次重排或者新增格子之后更新數(shù)組的數(shù)據(jù),這樣下次執(zhí)行排序算法的時(shí)候可以直接調(diào)用。
2.將新增格子保存在數(shù)組中作為參數(shù)傳遞給排序算法,僅對(duì)新格子進(jìn)行遍歷和操作。
第三個(gè)問(wèn)題是如果服務(wù)器無(wú)法給出圖片尺寸,那么必須在圖片完全加載完畢之后才可進(jìn)行排序(因?yàn)楦叨仁菍?shí)時(shí)獲取的,圖片不全高度有誤差),這里沒(méi)有什么好辦法,只能遍歷圖片,每張圖片加載成功后執(zhí)行一個(gè)回調(diào)函數(shù),將加載成功的圖片數(shù)量 1,當(dāng)加載成功的圖片數(shù)量等于圖片總數(shù)的時(shí)候執(zhí)行排序方法。缺點(diǎn)是有一張圖片加載不成共就無(wú)法看到所有的,真正項(xiàng)目中還是需要在異步加載數(shù)據(jù)的時(shí)候獲取圖片尺寸。
好了,以上就是在這次瀑布流實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題和解決方法,由一開(kāi)始加載3-4屏就卡死到現(xiàn)在可以無(wú)限加載(ff,chrome),深感優(yōu)化js的必要性和無(wú)限性。一點(diǎn)小心得寫(xiě)在這里權(quán)當(dāng)拋磚引玉,大家對(duì)瀑布流實(shí)現(xiàn)的優(yōu)化有什么見(jiàn)解歡迎一起交流討論。