并发请求-总定义并发数

news/2024/7/10 0:55:37 标签: 请求并发, js, 前端请求优化, vue

面试情景模拟:
假设有100个请求 要求每次并发数是3,要求按照请求的顺序返回相对应位置的顺序
在这里插入图片描述

假设A,B,C 并发三个请求

在这里插入图片描述
C先请求成功 进入到resC,D直接补位

在这里插入图片描述
依次类推 知道数量全部被请求完

代码如下 :

const urls = [];
for (let i = 0; i <= 100; i++) {
    urls.push(`https://ifarm.lovol.com/testapi/cfbusiservice/refund/getRefundList${i}`);
}

concurRequest(url, 3).then((resps) => {
    console.log(resps);
});

封装后的concurRequest:

function concurRequest(url, maxNum) {
    if (urls.length === 0) return Promise.resolve([]);
    return new Promise((resolve) => {
        let index = 0; //指向下一次请求的url对应的下标
        const result = []; //储存所有的请求结果
        let count = 0; // 当前完成的请求数量
        async function _request() {
            const i = index;
            const url = urls[index];
            index++;
            try {
                const resp = await fetch(url);
                result[i] = resp;
            } catch (err) {
                result[i] = err;
            } finally {
                count++;
                if (count === urls.length) {
                    resolve(result);
                }
                if (index < url.length) {
                    _request();
                }
            }
        }
        for (let i = 0; i < Math.min(urls.length,maxNum); i++) {
            _request();
        }
    });
}

结:自行试验


http://www.niftyadmin.cn/n/5408069.html

相关文章

Effective C++ 学习笔记 条款07 为多态基类声明virtual析构函数

有许多种做法可以记录时间&#xff0c;因此&#xff0c;设计一个TimeKeeper base class和一些derived classes作为不同的计时方法很合理&#xff1a; class TimeKeeper { public:TimeKeeper();~TimeKeeper();// ... };class AtomicClock : public TimeKeeper { /* ... */ }; …

【linux】linux系统调用及文件IO操作

一、系统调用 1、概述 系统调用&#xff1a; 就是操作系统内核 提供给用户可以操作内核 一组函数接口。用户 借助 系统调用 操作内核。比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件&#xff0c;可以通过时钟相关的系统调用获得系统时间或设置定时…

Python中的自然语言处理和文本挖掘

在Python中&#xff0c;自然语言处理&#xff08;NLP&#xff09;和文本挖掘通常涉及对文本数据进行清洗、转换、分析和提取有用信息的过程。Python有许多库和工具可以帮助我们完成这些任务&#xff0c;其中最常用的包括nltk&#xff08;自然语言处理工具包&#xff09;、spaCy…

Shell编程——常见的脚本执行命令(七)

☺echo命令&#xff08;输出&#xff09; 用于字符串的输出&#xff0c;命令格式&#xff1a;echo string 显示普通字符&#xff1a;“”双引号可省略 显示转义字符&#xff1a;\斜杠放在转义符前面 显示变量&#xff1a; 显示换行&#xff08;\n&#xff09;&#xff1a;-e开…

JavaScript- 关于数据类型及其判断方法(超全)

JavaScript- 数据类型 分了2大类型&#xff1a;简单数据类型、复杂(引用)数据类型 涉及到数据类型的情况下&#xff0c;我们可以联想到typescript&#xff0c;ts是强类型语言&#xff0c;变量会进行类型检查&#xff0c;变量类型限制死&#xff0c;不能随便更改&#xff1b; 而…

基于springboot的学生评奖评优管理系统的设计与实现论文

基于springbootvue的学生评奖评优管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了学生评奖评优管理系统的开发全过程。通过分析学生评奖评优管理系统管理的不足&#xff0c;创建了一个计算机管理学生…

010-CSS-书写规范

书写规范 1、类名规范&#xff1a;清晰明了&#xff0c;尽量保持类名唯一性&#xff0c;使用两到三个完整单词&#xff0c;采用中划线拼接2、样式嵌套不要太深&#xff0c;以两到三层为最佳&#xff0c;否则影响查找性能3、抽离公共样式文件&#xff0c;抽离公共变量4、添加 sc…

CTF-NetA:一款专业的CTF网络流量分析工具

​ CTF-NetA&#xff1a;一款专业的CTF网络流量分析工具 介绍 CTF-NetA是一款专门针对CTF比赛的网络流量分析工具&#xff0c;可以对常见的网络流量进行分析提取flag&#xff0c;软件具有UI&#xff0c;不需要使用者具备任何基础能力。 该工具支持多种协议的分析&#xff0…