国产精品一区二区三区……-大杳蕉伊人欧美一本遒在饯-日本不卡一区免费在线观看-国产亚洲欧美中文字幕

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

前端開(kāi)發(fā)如何實(shí)現(xiàn) Debounce 和 Throttle?

發(fā)表日期:2022-08-19 17:30:15   作者來(lái)源:王熙程   瀏覽:1686   標(biāo)簽:前端開(kāi)發(fā)    
在 JavaScript 中,每當(dāng)我們向事件偵聽(tīng)器附加高性能函數(shù)時(shí),控制函數(shù)調(diào)用頻率被認(rèn)為是最佳實(shí)踐。
 
一切都與性能有關(guān)
 
在構(gòu)建網(wǎng)頁(yè)時(shí),性能是一個(gè)主要問(wèn)題,特別是對(duì)于執(zhí)行動(dòng)畫(huà)和交互的網(wǎng)站。事件偵聽(tīng)器是實(shí)現(xiàn)與 JavaScript 交互的常見(jiàn)選擇,因?yàn)樗鼈冇糜跈z測(cè)頁(yè)面上的更改并根據(jù)這些更改調(diào)用函數(shù)。確保事件偵聽(tīng)器腳本針對(duì)性能進(jìn)行了優(yōu)化非常重要。
 
事件監(jiān)聽(tīng)器如何影響性能?
 
讓我們看看根據(jù)用戶(hù)操作調(diào)用事件偵聽(tīng)器的頻率。在下面的demo中執(zhí)行相應(yīng)的事件來(lái)查看計(jì)數(shù):事件偵聽(tīng)器會(huì)根據(jù)它們調(diào)用的事件影響性能。
 

前端開(kāi)發(fā)1

 
假設(shè)我們有一個(gè)負(fù)責(zé)向 DOM 添加新元素的函數(shù),并且每次用戶(hù)滾動(dòng)時(shí)我們都會(huì)調(diào)用這個(gè)函數(shù)。正如我們?cè)谘菔局锌吹降?,可以為用?hù)滾動(dòng)屏幕的每個(gè)像素調(diào)用滾動(dòng)事件偵聽(tīng)器。
 
向 DOM 添加元素會(huì)導(dǎo)致重排,這是瀏覽器計(jì)算新元素位置的方式。重排以級(jí)聯(lián)方式完成,因此更改一個(gè)元素的重排將導(dǎo)致所有后續(xù)元素的更改以及重新渲染文檔的部分或全部。這些計(jì)算可能會(huì)影響用戶(hù)速度并減慢您的頁(yè)面速度。您可以在本文中閱讀更多關(guān)于回流和重繪如何影響性能的信息。
 
每當(dāng)我們將高性能函數(shù)附加到事件偵聽(tīng)器時(shí),控制函數(shù)被調(diào)用的頻率被認(rèn)為是最佳實(shí)踐。
 
Debounce和Throttle是通過(guò)控制事件被調(diào)用的頻率來(lái)優(yōu)化腳本性能的兩種方法。
 
去抖動(dòng)與油門(mén)
 
debounce 和 throttling 的主要區(qū)別在于 debounce在用戶(hù)在特定時(shí)間內(nèi)沒(méi)有執(zhí)行事件時(shí)調(diào)用一個(gè)函數(shù),而當(dāng)用戶(hù)執(zhí)行一個(gè)事件時(shí),throttle 在指定的時(shí)間間隔調(diào)用一個(gè)函數(shù)事件。
 
例如,如果我們使用 250 毫秒(毫秒)的計(jì)時(shí)器對(duì)滾動(dòng)函數(shù)進(jìn)行去抖動(dòng),則該函數(shù)僅在用戶(hù)在 250 毫秒內(nèi)沒(méi)有滾動(dòng)時(shí)才被調(diào)用。如果我們用 250 毫秒的計(jì)時(shí)器限制滾動(dòng)函數(shù),則該函數(shù)在用戶(hù)滾動(dòng)時(shí)每 250 毫秒調(diào)用一次。
 

前端制作

如沒(méi)特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://pdcharm.com/news/6511.html
增城市| 合江县| 海盐县| 裕民县| 伊吾县| 黑山县| 舒城县| 集贤县| 宁城县| 托克逊县| 缙云县| 普陀区| 舒城县| 涿鹿县| 汽车| 仁化县| 木兰县| 乌审旗| 环江| 涿州市| 北安市| 嘉善县| 北安市| 宜川县| 崇义县| 合阳县| 泗阳县| 福海县| 双辽市| 武汉市| 武宣县| 榆中县| 杂多县| 吉木乃县| 临西县| 南通市| 桐庐县| 铁岭县| 苏尼特右旗| 皋兰县| 宾川县|