亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

react+antd4實現(xiàn)優(yōu)化大批量接口請求

 更新時間:2024年02月05日 15:27:33   作者:某哈壓力大  
這篇文章主要為大家詳細介紹了如何使用react hooks + antd4實現(xiàn)大批量接口請求的前端優(yōu)化,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

背景

接到一個需求,需要做一個運維的功能,對公司下平臺子系統(tǒng)做一個開關界面,要求可以大批量對系統(tǒng)進行修改。這樣大批量的修改,如果有個老哥手一抖點了全選,那可能同時會發(fā)送幾十上百個接口,對瀏覽器和服務器都會是一個比較大的負擔。

相似的應用場景還有:文件批量上傳等

使用技術棧:react hooks + antd4

分析

維護一個任務池,先默認發(fā)出最大并發(fā)數(shù)量的接口請求,一個蘿卜一個坑,當上一個請求結束(無論成功失?。?,則讓下一個請求進入任務隊列,之道所有請求列表都請求完成,返回這個任務池的最終結果。

部分代碼實現(xiàn)

主要業(yè)務邏輯

// ... 點擊確定,先進行前置校驗
const onSubmitHandle = (event) => {
    event.preventDefault(); // 防止觸發(fā)原生submit,導致瀏覽器頁面刷新
    validateFields((err, values) => {
        // 校驗通過
        if(!err){
            // 通過遍歷組裝參數(shù)
            const arrParam = concateDynamicParams(values);
            concurrentControl(arrParm, 5)
            .then(res)=> {
                // 獲取成功列表和失敗列表
                const { sucSystem, faildSystem } = getSucAndFailedResult(res);
                const content = (
                  <p>
                     {'修改成功的系統(tǒng):'}
                     <br />
                     {`${sucSystem}`}
                     <br />
                     {'修改失敗的系統(tǒng):'}
                     <br />
                     {`${faildSystem}`}   
                  </p>
                );
                Modal.info({
                    title: "提示",
                    content,
                    oKText: "確定",
                })
                // 取消loading,重置列表等操作...
            }
        }
    })
}

維護任務池,控制并發(fā)數(shù)

const concurrentControl = (arrParam, maxNum = 10) => 
	new Promise((resolve) => {
        // 無任務數(shù)據時
        if(!arrParam.length){
            resolve([]);
            return;
        }
        const results = []; // 最終的結果集合,用于保存接口返回的信息
        let index = 0; // 用于記錄下一個接口下標
        let count = 0; // 用于記錄發(fā)送了多少條數(shù)據
        
        
        
        const request = async () => {
            if(index === arrParam.length) return; // 出口
            const i = index; // 當前下標(備份)
            // 組裝請求路徑與參數(shù)
            const url = arrParam[i].url;
            const param = arrParam[i].data;
            index++; // 預先記錄下一個請求的下標
            try{
                // 發(fā)送請求
                const resp = await dispatchSqlGuardSwitchProcess(url, param);
                result[i] = resp; // 記錄返回結果
            } catch( error ){
                result[i] = error;
            } finally {
                count++ ; // 當前接口完成,下一個接口調用開始
                if(count === arrParam.length){ // 全部任務池中的接口都調用完畢
                    resolve(results)
                }
                request()(); // 繼續(xù)下一個請求
            }    
        }
        
        // 初始化請求數(shù)
        const maxParallelRequests = Math.min(maxNum, arrParam.length);
        for(let i = 0; i < maxParallelRequests; i++){
            request()
        }
         
    })

總結

核心思想是一個蘿卜一個坑,直到所有的蘿卜都從坑里出來。(誤)

通過維護一個任務池,標記當前請求,下一個請求,以及當前總共請求的次數(shù),便可以做到前端控制并發(fā)的需求場景。

參考資料:關于前端:如何實現(xiàn)并發(fā)請求數(shù)量控制?

到此這篇關于react+antd4實現(xiàn)優(yōu)化大批量接口請求的文章就介紹到這了,更多相關react優(yōu)化請求內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解React如何優(yōu)雅地根據prop更新state值

    詳解React如何優(yōu)雅地根據prop更新state值

    這篇文章主要為大家詳細介紹了React如何優(yōu)雅地實現(xiàn)根據prop更新state值,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解下
    2023-11-11
  • 詳解在create-react-app使用less與antd按需加載

    詳解在create-react-app使用less與antd按需加載

    這篇文章主要介紹了詳解在create-react-app使用less與antd按需加載,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 一文詳解React中如何實現(xiàn)組件懶加載

    一文詳解React中如何實現(xiàn)組件懶加載

    懶加載是一種優(yōu)化技術,旨在延遲加載不必要的資源,直到它們真正需要時再進行加載,那么React的懶加載是如何實現(xiàn)的呢,下面小編就來和大家詳細講講吧
    2025-03-03
  • React系列useSyncExternalStore學習詳解

    React系列useSyncExternalStore學習詳解

    這篇文章主要為大家介紹了React系列useSyncExternalStore的學習及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • React實現(xiàn)響應式布局的最佳實踐

    React實現(xiàn)響應式布局的最佳實踐

    在當今的前端開發(fā)中,響應式設計已經成為必不可少的部分,隨著各種設備的出現(xiàn),確保我們的網頁在不同屏幕尺寸上展示良好,已經成為開發(fā)者的首要任務之一,本文將介紹如何在React中實現(xiàn)響應式布局,提供一些最佳實踐和示例代碼,幫助大家更好地理解這一概念
    2025-02-02
  • react-beautiful-dnd拖拽排序功能的實現(xiàn)過程

    react-beautiful-dnd拖拽排序功能的實現(xiàn)過程

    這篇文章主要介紹了react-beautiful-dnd拖拽排序功能的實現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • react高階組件添加和刪除props

    react高階組件添加和刪除props

    這篇文章主要介紹了react高階組件添加和刪除props,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • react+zarm實現(xiàn)底部導航欄的示例代碼

    react+zarm實現(xiàn)底部導航欄的示例代碼

    本文主要介紹了react?+?zarm?實現(xiàn)底部導航欄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解React?ISR如何實現(xiàn)Demo

    詳解React?ISR如何實現(xiàn)Demo

    這篇文章主要為大家介紹了React?ISR如何實現(xiàn)Demo詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • React冒泡和阻止冒泡的應用詳解

    React冒泡和阻止冒泡的應用詳解

    這篇文章主要介紹了React冒泡和阻止冒泡的應用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論