前几天睿联的面试官问了这样一个问题:如何控制Promise.all的并发量,当时回答的不好,于是经过一段时间的探索,解决了该问题
首先我们要知道promise.all()的用法一般是是传入一个promise的数组,但是由于Promise的内部是同步代码,在Promise生成后其里面的异步请求就已发送,Promise.all()只是对其结果的一个收集,那么我们要想进行并发控制就必须在生成Promise的阶段进行并发控制下面是代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Promise.all()</title>
</head>
<body></body>
<script>
// 并发量
const limit = 3;
// 异步任务的参数数组,一般为url
const array = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12