关于带并发数限制的fetch请求函数

举报
Amrf 发表于 2020/12/16 11:09:16 2020/12/16
【摘要】 碰巧遇到个类似的场景,在控制台里下载一些东西,用promise一个一个下载感觉太慢,一次性都请求出去,由于连接数限制,后面的请求大概率失败;所以需要一个带并发限制的fetch请求函数;下面参考的帖子的场景思路上是合适的,不过我还要对不同的请求执行不同类型的回调,所以需要改造下。初步的结构大概是这个样子的:let pending_count = 0;let max = 5;let urls =...

碰巧遇到个类似的场景,在控制台里下载一些东西,用promise一个一个下载感觉太慢,一次性都请求出去,由于连接数限制,后面的请求大概率失败;所以需要一个带并发限制的fetch请求函数;下面参考的帖子的场景思路上是合适的,不过我还要对不同的请求执行不同类型的回调,所以需要改造下。

初步的结构大概是这个样子的:

let pending_count = 0;
let max = 5;
let urls = []
async function _fetch(arr) { 
    if (!arr[0]) return; 
    pending_count++; 
    console.log(arr[0] + ':start','并发数: '+pending_count); 
    let response = await fetch(arr[0]) 
    if(arr[1] == "code"){
	    。。。
    }else if(arr[1] == "img"){
	    。。。
    }else if(arr[1] == "md"){
	    。。。
    }else if(arr[1] == "imgraw"){
	    。。。
    }
    pending_count--; 
    console.log(arr[0] + ':done','并发数: '+pending_count); 
    _fetch(urls.pop()); 
    pending_count
}
function sendResquest(url,callback) {  
    if(pending_count < max) { 
        _fetch([url,callback])
    } else {
	    urls.push([url,callback])
    } 
}

参考:

15行代码实现一个带并发数限制的fetch请求函数

https://blog.csdn.net/qq_33081841/article/details/88583735

23行代码实现一个带并发数限制的fetch请求函数

https://juejin.cn/post/6844903796506624014

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。