用于執(zhí)行JavaScript和更新用戶(hù)界面的進(jìn)程通常被稱(chēng)為“瀏覽器UI線程”。JavaScript和用戶(hù)界面更新在同一個(gè)進(jìn)程中運(yùn)行,因此一次只能處理一件事情。
·任何JavaScript任務(wù)都不應(yīng)當(dāng)執(zhí)行超過(guò)100毫秒,過(guò)長(zhǎng)的運(yùn)行時(shí)間導(dǎo)致UI更新出現(xiàn)明顯延遲,從而會(huì)影響用戶(hù)體驗(yàn)。
·瀏覽器有兩類(lèi)限制JavaScript任務(wù)的運(yùn)行時(shí)間的機(jī)制,調(diào)用棧大小限制(即記錄自腳本開(kāi)始以來(lái)執(zhí)行的語(yǔ)句的數(shù)量)和長(zhǎng)時(shí)間運(yùn)行腳本限制(記錄腳本執(zhí)行的總時(shí)長(zhǎng),超時(shí)的時(shí)候會(huì)有彈框提示用戶(hù)[chrome沒(méi)有單獨(dú)的程云霞腳本限制,替代做法是依賴(lài)其通用奔潰檢測(cè)系統(tǒng)來(lái)處理此類(lèi)問(wèn)題])。
一些優(yōu)化JavaScript任務(wù)時(shí)間的常見(jiàn)做法:
①使定時(shí)器讓出時(shí)間片段
1.使用定時(shí)器處理數(shù)組。當(dāng)處理過(guò)程不須同步,數(shù)據(jù)不須按順序處理時(shí)。即可考慮用定時(shí)器分解任務(wù)。
如:
網(wǎng)友評(píng)論 |