现有一个接口 https://test.com/get?id=1
,需要发起 id 从1~200的 GET 方式调用200次异步请求
要求分20轮发出,前一轮全部完成后才进行下一轮,每轮同时并发请求为10次
提供的接口无效,随便选了另一个接口
http://www.tianqiapi.com/api?version=v9&appid=23035354&appsecret=8YvlPNrz&id=
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0-0/axios.js"></script>
</head>
<body>
<script>
let url =
'http://www.tianqiapi.com/api?version=v9&appid=23035354&appsecret=8YvlPNrz&id='
// 每轮同时发请求10个。不然声明方法就会发请求喽
function getRequestList (j) {
let arr = []
for (let i = 1; i < 11; i++) {
arr.push(axios.get(url + (j * 10 + i)))
}
return arr
}
async function requestAll () {
// 每一轮发完后再发下一轮
// 相当于是await后面再有await,后面等待前面
for (let j = 0; j < 20; j++) {
await Promise.all(getRequestList(j))
}
}
requestAll()
</script>
</body>
</html>