函式防抖(防表單重複提交)

2022-09-23 22:06:24 字數 715 閱讀 3795

在前端開發中,常常需要對某些函式進行節流和防抖。目前針對不同場景防抖方案也較多,其中lodash和rxjs中提供的方案,是一種被廣泛使用的方案,其通用性也較強,使用簡單,可以覆蓋我們大部分的業務場景。

即:當呼叫函式n毫秒後,才會執行該動作,若在這n毫秒內又呼叫該函式則將取消前一次計時並重新計算執行時間

/**

* 防抖函式

* @param func 需要防止抖動的**函式

* @param wait 防抖時間,單位毫秒,預設500毫秒

*/export const debounce = (func, wait=500) =>

}, wait);

};}

import  from "@/utils/util"; // 匯入函式

const debounceclick = debounce(() => , 500); // 500毫秒內該按鈕沒有點選行為則觸發提交邏輯,否則,重新計時

提交資料

不足:上面示例設定防抖時間為500毫秒,表示使用者點選按鈕500毫秒後再次點選按鈕,會再次觸發提交。這種防抖方案沒有考慮服務端返回時間,對於需要考慮服務端返回的場景,需要自行在業務邏輯中處理。

防重複提交方案

因為服務端是使用token來獲取使用者資訊,沒有對應的session管理機制,不能用sessionid加上使用者請求的url作為唯一標識。但是伺服器中的userid是用雪花演算法進行計算,能確保唯一性,所以我們選擇用userid加上使用者請求的url作為使用者請求的唯一標識。當使用者請求post p...

函式防抖和節流(一) 防抖函式

一.什麼是函式防抖?1 概念 函式防抖 debounce 就是指觸發事件後,在延遲時間內函式只能執行一次,如果觸發事件後在延遲時間內又觸發了事件,則會重新計算函式延執行時間。等延遲時間計時完畢,則執行目標 2 例如 坐電梯的時候,如果電梯檢測到有人進來 觸發事件 就會多等待 10 秒,此時如果又有人...

javascript函式防抖

函式防抖是頻繁發生的情況下,當有足夠的空閒時間,才會執行 一次,是優化高頻率執行 的一種手段。實際開發中會遇到頻發觸發事件的情況,比如resize,scroll,mousemove事件。事件觸發 n 秒後執行,如果在這 n 秒內再次觸發,則以新的事件時間為準,n 秒後執行。無論觸發多少次,都要等到最...