实现批量请求函数
实现一个批量请求函数 multiRequest(urls, maxNum)
要求如下:
- 要求最大并发数 maxNum
- 每当有一个请求返回,就留下一个空位,可以增加新的请求
- 所有请求完成后,结果按照 urls 里面的顺序依次打出
答案一
function multiRequest(urls, maxNum) { let results = new Array(urls.length).fill(null); // 用于存放请求结果 let currentIndex = 0; // 当前请求的索引 let activeCount = 0; // 当前正在进行的请求个数 function handleRequest(url, index) { activeCount++; // 当前正在进行的请求个数加1 fetch(url) .then(response => response.json()) .then(data => { results[index] = data; // 存储请求结果 activeCount--; // 当前正在进行的请求个数减1 if (currentIndex < urls.length) { handleRequest(urls[currentIndex], currentIndex); // 继续进行下一个请求 currentIndex++; } if (activeCount === 0) { console.log(results); // 所有请求完成后,按照 urls 里面的顺序依次打出结果 } }) .catch(error => console.error(error)); } while (currentIndex < urls.length && currentIndex < maxNum) { handleRequest(urls[currentIndex], currentIndex); currentIndex++; } }
调度器版本
也可以通过实现一个调度器进行实现
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论