函式節流 防抖與使用場景

2021-08-21 13:25:02 字數 998 閱讀 4933

/*

* 防抖

* 思路:根據定時器的建立與銷毀來判斷是否進行fn操作

* 操作結束後一段時間wait秒內,沒有再次觸發該操作,fn才執行

* 如果wait秒內又觸發了該操作,則重新計時,重新等待wait秒後執行

* 若需要先立即執行一次,在定時器生效前定乙個flag

* 業務場景:搜尋聯想、防止重複**/支付等

*/

function debounce(fn,wait,rightnow)

timer = settimeout(()=>,wait)

if(rightnow && !flag)

}}let fn = function()

window.onscroll = debounce(fn,1000);

/*

* 節流

* 思路: 根據當前時間間隔來判斷是否執行fn

* 對於連續觸發的事件,在一定的時間wait秒內,函式fn只執行一次* */

function throttle(fn,wait) 

}}let fn = function()

window.onscroll = throttle(fn,1000);

這兩者的區別在於:

防抖需要在特定的操作結束後或者結束時才會執行(設定的間歇時間wait)次,而節流函式會讓會執行(實際操作持續的時間time/設定的間歇時間wait)次,比如搜尋聯想需要在輸入完全結束後才執行聯想功能,才可以減少請求次數,具有多次**機會時,需要等到第一次**結果返回並執行todos後,才能進行第二次**,這種型別的業務場景我們就選擇防抖函式,而另外,當我們在另一些業務場景時,比如上拉重新整理,多次觸發時,當然不需要不斷請求,也不是只能請求一次,我們需要讓他每隔幾秒請求一次,達到減少請求次數的要求,又能讓使用者對自己多次操作又一定的互動體驗。

函式節流和防抖 以及使用場景

二 防抖 定時器版 推薦 小結節流和防抖是前端工作中使用頻率很高的技巧,合理使用可以提高前端效能,減輕伺服器壓力。我們通過輸入框來觀察時間觸發頻率以及觸發時獲取到的值。lang en charset utf 8 name viewport content width device width,ini...

函式節流與防抖

1.短時間內大量觸發,只需要第一次觸發,後面的不觸發,只有大於設定的週期後才會執行第二次 function throttle fn,delay document.onscroll throttle function 300 1.短時間內乙個頻繁需要執行的函式,在規定的時間內,最後一次執行,前面的不生...

函式防抖與函式節流

函式防抖 debounce 當呼叫動作過n毫秒後,才會執行該動作,若在這n毫秒內又呼叫此動作則將重新計算執行時間 函式節流 throttle 預先設定乙個執行週期,當呼叫動作的時刻大於等於執行週期則執行該動作,然後進入下乙個新週期 函式節流 throttle 與函式防抖 debounce 都是為了限...