1. 程式人生 > 其它 >函式節流和防抖(二)—— 節流函式

函式節流和防抖(二)—— 節流函式

技術標籤:javascriptes6

二、什麼是函式防抖?
1、概念:函式防抖(throttle),是指在連續觸發的事件中,在延遲時間內有且僅執行一次函式。節流如字面意思,會稀釋函式的執行頻率。

2、使用場景:

  • 當用戶量很大時,搜尋框中搜索按鈕的連續點選
  • 在規定的時間內不準點選第二次,例如使用者名稱、手機號、郵箱輸入驗證功能

3、程式碼實現:

  • setTimeout版
function throttle(fun, wait) {
	let timer;
	return function (...arguments) {
		if(timer) {
			return;
		};
		timer =
setTimeout(() => { fun.apply(this, arguments); timer = null; }, wait); } }
  • 時間戳版
function throttle(fun, wait) {
	let previous_time = 0;
	return function (...arguments) {
		let current_time = +new Date();
		if(current_time - previous_time > wait) {
			fun.apply(this, arguments);
			previous_time =
current_time; } } }

4、setTimeout版和時間戳版的區別就在於:
setTimeout版中目標函式的觸發是在wait時間結束的時候觸發的,而時間戳版中目標函式的觸發是在wait時間開始的時候觸發的。

每一篇一個知識點,That’s all,thank you.