1. 節(jié)流Throttle - 調(diào)用多次、只第一次調(diào)用有效
在一段時(shí)間內(nèi),不論觸發(fā)多少次調(diào)用,都以第一次為準(zhǔn)。 輸入框補(bǔ)全提示,只需要每?jī)擅胙a(bǔ)全一次。
主要思路利用時(shí)間戳判斷,每次調(diào)用判斷和上一次調(diào)用的時(shí)間差異確定是否需要調(diào)用。 throttle實(shí)際是一個(gè)工廠函數(shù),可以將一個(gè)函數(shù)封裝為一個(gè)帶有節(jié)流功能的函數(shù)。
2. 防抖Debounce 最后一次為準(zhǔn)
在一段時(shí)間內(nèi),不論觸發(fā)多少期回調(diào),都已最后一次為準(zhǔn)。 比如:以用戶拖拽改變窗口大小,觸發(fā) resize 事件為例,會(huì)觸發(fā)組件重新布局,這里面只有最后一次調(diào)用是有意義的。
實(shí)現(xiàn)的話可以使用定時(shí)器執(zhí)行函數(shù),新調(diào)用發(fā)生時(shí)如果舊調(diào)用沒(méi)有執(zhí)行就清除之前的定時(shí)器。