国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何限制請求的并發(fā)數(shù)量

這篇具有很好參考價值的文章主要介紹了如何限制請求的并發(fā)數(shù)量。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


需求:當前端同時發(fā)出多個api請求,在前端對請求的并發(fā)數(shù)量進行限制,做到同時只能處理有限個請求任務

設計思路:

  • 設計 Scheduler 類 對需要發(fā)送的請求進行統(tǒng)一管理
  • 類中配置最大并發(fā)數(shù) “max”,并記錄正在執(zhí)行的請求數(shù)目 “count”
  • 通過 await + Promise 對超出限制數(shù)量時的請求進行阻塞
  • 當正在執(zhí)行的請求完成后,按順序?qū)ψ枞恼埱筮M行放行

代碼實現(xiàn):

模擬請求

function sleep(val, time) {
    return new Promise(reslove => {
        setTimeout(() => {
            reslove(val)
        }, time)
    })
}
function addTask(val, time) {
    return () => sleep(val, time).then(result => {
        console.log(result);
        return result
    })
}

Scheduler類實現(xiàn):

class Scheduler {
    constructor(max) {
        this.max = max    // 記錄支持并發(fā)的任務數(shù)量
        this.count = 0    // 當前正在執(zhí)行的任務數(shù)
        this.stack = []   // 使用隊列保存被阻塞任務
    }

    async add(fun) {
        // 當正在執(zhí)行的任務個數(shù)大于最大并發(fā)數(shù)時:使用await阻塞該請求的發(fā)送,記錄 reslove 到 stack 下   
        // 待執(zhí)行中的任務完成后按順序?qū)?stack 中的阻塞任務放行
        if (this.count >= this.max) {
            await new Promise(reslove => this.stack.push(reslove))
        }
        this.count = this.count + 1
        let result = await fun()
        this.count = this.count - 1
        if (this.stack.length) this.stack.shift()()
        return result
    }
}

效果測試:文章來源地址http://www.zghlxwxcb.cn/news/detail-541589.html

const scheduler = new Scheduler(2)
scheduler.add(addTask(1, 1000))
scheduler.add(addTask(2, 500))
scheduler.add(addTask(3, 400))
scheduler.add(addTask(4, 200))
// 打印 2 3 1 4

提示:文章到此結(jié)束,文章為個人學習記錄,侵刪。

到了這里,關(guān)于如何限制請求的并發(fā)數(shù)量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 高并發(fā)服務器的限制有哪些,如何提高并發(fā)量

    高并發(fā)服務器的限制有哪些,如何提高并發(fā)量

    目錄 前言 并發(fā)量限制因素 (五元組) 準備 測試并發(fā)量 思考局限 如何打破 超時連接問題何在 connection timeout的解決辦法 實際開發(fā)中的處理方案 文章小結(jié) 本文純粹就是小杰學習后端服務器開發(fā)的一個學習筆記系列. 小杰會盡量地將其梳理清楚, 大家一起學習,共同進步, 知識不

    2024年02月09日
    瀏覽(25)
  • Axios基本使用,為學習后續(xù)的Vue服務【發(fā)送請求+并發(fā)請求+前端攔截器】

    目錄 1、項目中引入Axios 2、使用Axios發(fā)送請求 2.1、例:發(fā)送GET請求 2.2、例:發(fā)送POST請求 3、axios并發(fā)請求 4、攔截器 注:個人學習筆記,因自己學過后端,所以有關(guān)后端的代碼,我在這里就不展示了~ 不了解后端的寶子,也不會耽誤學習,因為公司里會有寫好的接口文檔,直

    2024年02月02日
    瀏覽(56)
  • Linux下 TCP 連接限制如何解除,解決socket高并發(fā)連接數(shù)限制,tcp默認1024個連接

    蘇州私有云 當用戶使用Linux作為系統(tǒng)時,socket在運行高并發(fā)的TCP程序時,可能會遇到連接數(shù)量到一定個數(shù)后被阻斷的情況 我在工作的時候,測試高并發(fā)tcp程序(GPS服務器端程序),經(jīng)過多次測試之后,發(fā)現(xiàn)每次建立的連接到達1000個左右 就再也不能建立tcp連接,然后在互聯(lián)網(wǎng)

    2024年02月16日
    瀏覽(39)
  • 前端網(wǎng)絡請求之JavaScript XHR、Fetch、Axios

    AJAX:一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)。在后臺與服務器進行少量數(shù)據(jù)交換,Ajax 可以使網(wǎng)頁實現(xiàn)異步更新。在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新 Fetch:基于 promise 設計的。Fetch 的代碼結(jié)構(gòu)比起 ajax 簡單多。fetch 不是 aj

    2024年01月23日
    瀏覽(33)
  • Postman 并發(fā)測試入門指南:如何模擬用戶并發(fā)請求?

    Postman 并發(fā)測試入門指南:如何模擬用戶并發(fā)請求?

    最近,我們發(fā)起了一個在線圖書管理系統(tǒng)的項目。我負責的一個關(guān)鍵模塊包括三個主要后臺接口: 實現(xiàn)對 books 數(shù)據(jù)的檢索。 實施對 likes 數(shù)據(jù)的獲取。 通過 collections 端點訪問數(shù)據(jù)。 應對高流量的挑戰(zhàn) 在設計并部署接口時,我們不可避免地需要考慮關(guān)鍵的問題: 你制作的產(chǎn)

    2024年02月03日
    瀏覽(25)
  • Elasticsearch索引數(shù)量限制

    Elasticsearch索引數(shù)量限制

    Elasticsearch的索引可以無限創(chuàng)建嗎? Elasticsearch 7.9.1 Elasticsearch啟動 Elasticsearch啟動采用默認配置 代碼 使用SpringBoot編寫測試代碼,對ES進行索引創(chuàng)建測試。 SpringBoot連接配置 測試類代碼 單機測試,設置每個索引占用4個分片,0個副本,先創(chuàng)建1000個索引進行測試,是否能創(chuàng)建成功

    2023年04月08日
    瀏覽(14)
  • ES設置最大查詢條數(shù)限制,打破限制,聚合分組數(shù)量限制打破

    ? 今天在做 ElasticSearch 進行查詢的時候發(fā)現(xiàn),在進行分頁的時候,數(shù)據(jù)超出10000以后得頁數(shù),查詢的時候會報錯。后查詢了 es 官方文檔發(fā)現(xiàn),查詢數(shù)量的默認值是 10000 ; 官網(wǎng)鏈接:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/index-modules.html#dynamic-index-settings 報錯內(nèi)容: 在

    2024年02月03日
    瀏覽(29)
  • ElasticSearch 10000條查詢數(shù)量限制

    ElasticSearch 10000條查詢數(shù)量限制

    我們將庫存快照數(shù)據(jù)導入ES后發(fā)現(xiàn)要分頁查詢10000條以后的記錄會報錯,這是因為ES通過index.max_result_window這個參數(shù)控制能夠獲取數(shù)據(jù)總數(shù)from+size最大值,默認限制是10000條,因為ES考慮到數(shù)據(jù)要從其它節(jié)點上報到協(xié)調(diào)節(jié)點如果搜索請求的數(shù)據(jù)越多,會導致ES協(xié)調(diào)節(jié)點占用的堆內(nèi)

    2024年02月06日
    瀏覽(24)
  • 【前端面試】中大文件上傳/下載:中等文件代理服務器放行+大文件切片傳輸+并發(fā)請求+localstorage實現(xiàn)斷點續(xù)傳

    【前端面試】中大文件上傳/下載:中等文件代理服務器放行+大文件切片傳輸+并發(fā)請求+localstorage實現(xiàn)斷點續(xù)傳

    目錄 切片上傳~spark-md5 原理:流式計算+分塊處理 文件標識spark-md5:A-B A.切片哈希值合并 B.首尾切片+其他切片前中后各取2M 計算hash:A-B(參考React的Fiber架構(gòu)) A.線程:web-worker B.空閑:requestIdleCallback 異步并發(fā)控制:A-B(參考http2的多路復用) A.promise.allSettled() B.并發(fā)數(shù)max=

    2024年02月12日
    瀏覽(30)
  • MySQL的字段數(shù)量以及長度限制

    MySQL的字段數(shù)量以及長度限制

    行格式 緊湊的存儲特性 增強的可變長度列存儲 大型索引鍵前綴支持 壓縮支持 支持的表空間類型 REDUNDANT N N N N system, file-per-table, general COMPACT Y N N N system, file-per-table, general DYNAMIC Y Y N N system, file-per-table, general COMPRESSED Y Y Y Y file-per-table, general 開發(fā)中常用的是DYNAMIC行格式,這里

    2024年02月08日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包