五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

前端筆試題之手寫防抖節(jié)流

2021-06-10 20:05 作者:壞蛋Dan丶  | 我要投稿

這個在線下筆試還是挺常見的,不過我看春招筆試題幾乎沒遇到過。實(shí)際開發(fā)中用的也多,所以學(xué)了不虧。將他們運(yùn)用在一些高頻事件的優(yōu)化上能有很大的性能提升。


1. 防抖(debounce)

在事件被觸發(fā)n秒后再執(zhí)行回調(diào),如果在這n秒內(nèi)又被觸發(fā),則重新計時。

常用于監(jiān)聽keyup等,比如在實(shí)現(xiàn)一個根據(jù)輸入字會動態(tài)顯示在下方的搜索內(nèi)容的輸入框,如果不使用防抖的話,每次keyup或者change時都會進(jìn)行一次請求,會對服務(wù)器造成很大的壓力。

先來看一下最簡單的實(shí)現(xiàn)代碼:


上面的方法存在兩個問題

  1. timer暴露在外,會對全局造成污染

  2. fn如果要傳參需要在debounce那里傳入,雖然可以使用arguments,但不是很好。

那么針對以上的問題完善后:


在外層使用函數(shù)包起來解決全局污染問題,同時使用第二層函數(shù)傳參,解決函數(shù)傳參問題。


最后再優(yōu)化下第一次調(diào)用無法立即執(zhí)行的問題


2. 節(jié)流(throttle)

每隔一段時間,只執(zhí)行一次函數(shù)。

我個人比較喜歡在監(jiān)聽resize時使用。

如果使用的是rem等,那就會導(dǎo)致瀏覽器一直在重繪,會造成很大消耗。在使用throttle后在一段時間內(nèi)只執(zhí)行一次,將N次變?yōu)橐粌纱危艽蟮臏p少了瀏覽器損耗。但常規(guī)的話是用在按鈕重復(fù)點(diǎn)擊的情況下,保證一段時間內(nèi)重復(fù)點(diǎn)擊按鈕只會觸發(fā)一次并且不是最后一次點(diǎn)擊等。

來看下的實(shí)現(xiàn)方法(常見的是使用時間戳,所以這里不會展示使用定時器的節(jié)流):


優(yōu)化下,讓監(jiān)聽停止后最后一次執(zhí)行,使用定時器做最后一次延遲執(zhí)行。


不足之處,麻煩指出,謝謝!

前端筆試題之手寫防抖節(jié)流的評論 (共 條)

分享到微博請遵守國家法律
龙山县| 柘城县| 亳州市| 罗田县| 蛟河市| 天水市| 外汇| 大城县| 淮北市| 万年县| 阳新县| 西贡区| 阿巴嘎旗| 溆浦县| 沅陵县| 和平县| 德保县| 丽水市| 岚皋县| 靖州| 平原县| 麟游县| 安庆市| 阿荣旗| 台江县| 云霄县| 太保市| 南华县| 江口县| 汝阳县| 闵行区| 庆阳市| 保靖县| 永济市| 昌宁县| 灌南县| 昭通市| 金湖县| 石城县| 伊吾县| 大庆市|