debounce fun 防抖動函式的用法

2022-07-06 00:48:12 字數 1479 閱讀 9250

_.debounce(func, [wait=0], [options=]),

debounced(防抖動)函式,該函式會從上一次被呼叫後,延遲wait毫秒後呼叫func方法。 debounced(防抖動)函式提供乙個cancel方法取消延遲的函式呼叫以及flush方法立即呼叫。 可以提供乙個 options(選項) 物件決定如何呼叫func方法,options.leading與|或options.trailing決定延遲前後如何觸發(注:是 先呼叫後等待 還是 先等待後呼叫)。func呼叫時會傳入最後一次提供給 debounced(防抖動)函式 的引數。 後續呼叫的 debounced(防抖動)函式返回是最後一次func呼叫的結果。

引數func(function): 要防抖動的函式。

[wait=0](number): 需要延遲的毫秒數。

[options=] (object): 選項物件。

[options.leading=false](boolean): 指定在延遲開始前呼叫。

[options.maxwait](number): 設定func允許被延遲的最大值。

[options.trailing=true](boolean): 指定在延遲結束後呼叫。

返回(function): 返回新的 debounced(防抖動)函式。

例子

//

避免視窗在變動時出現昂貴的計算開銷。

jquery(window).on('resize', _.debounce(calculatelayout, 150)); //

當點選時 `sendmail` 隨後就被呼叫。

jquery(element).on('click', _.debounce(sendmail, 300, )); //

確保 `batchlog` 呼叫1次之後,1秒內會被觸發。

var debounced = _.debounce(batchlog, 250, );

var source = new eventsource('/stream');

jquery(source).on('message', debounced); //

取消乙個 trailing 的防抖動呼叫

jquery(window).on('popstate', debounced.cancel);

用途:

或專案崩潰

$('.elements').on('input',(e)=>)

$('.elements').on('input',debounce((e)=>,500))

按鍵防抖動程式

第乙個防抖動程式 key2.v module key2 input clk,rst,key,output led 分頻器 開始 reg 17 0 cout always posedge clk if rst cout 0 else cout cout 1 b1 wire clk 5ms cout 相...

防抖動資料請求

解決方案 const list debounce fun catch e finally d list 複製 效果是只呼叫一次,返回多個結果 this.debounce server.serversearchnews this.debounce server.serversearchnews thi...

防抖動與節流

針對一些會頻繁觸發的事件如scroll resize,如果正常繫結事件處理函式的話,有可能在很短的時間內多次連續觸發事件,十分影響效能。所以我們對於這種事件我們要進行防抖動或者節流的處理來優化效能。防抖動 將幾次操作合併為一此操作進行。原理是維護乙個計時器,規定在delay時間後觸發函式,但是在de...