Lodash _.throttle

2021-09-24 10:15 更新

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

創(chuàng)建一個(gè)節(jié)流函數(shù),在 wait 秒內(nèi)最多執(zhí)行 func 一次的函數(shù)。 該函數(shù)提供一個(gè) cancel 方法取消延遲的函數(shù)調(diào)用以及 flush 方法立即調(diào)用。 可以提供一個(gè) options 對象決定如何調(diào)用 func 方法, options.leading 與|或 options.trailing 決定 wait 前后如何觸發(fā)。 func 會(huì)傳入最后一次傳入的參數(shù)給這個(gè)函數(shù)。 隨后調(diào)用的函數(shù)返回是最后一次 func 調(diào)用的結(jié)果。注意: 如果 leading 和 trailing 都設(shè)定為 true 則 func 允許 trailing 方式調(diào)用的條件為: 在 wait 期間多次調(diào)用。如果 wait 為 0 并且 leading 為 false, func調(diào)用將被推遲到下一個(gè)點(diǎn),類似setTimeout為0的超時(shí)。查看David Corbacho's article 了解_.throttle 與_.debounce 的區(qū)別。

添加版本

0.1.0

參數(shù)

  1. func (Function): 要節(jié)流的函數(shù)。
  2. [wait=0] (number): 需要節(jié)流的毫秒。
  3. [options=] (Object): 選項(xiàng)對象。
  4. [options.leading=true] (boolean): 指定調(diào)用在節(jié)流開始前。
  5. [options.trailing=true] (boolean): 指定調(diào)用在節(jié)流結(jié)束后。

返回

(Function): 返回節(jié)流的函數(shù)。

例子

// 避免在滾動(dòng)時(shí)過分的更新定位
jQuery(window).on('scroll', _.throttle(updatePosition, 100)); 
// 點(diǎn)擊后就調(diào)用 `renewToken`,但5分鐘內(nèi)超過1次。
var throttled = _.throttle(renewToken, 300000, { 'trailing': false });jQuery(element).on('click', throttled); 
// 取消一個(gè) trailing 的節(jié)流調(diào)用。
jQuery(window).on('popstate', throttled.cancel);


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號