写一道笔试题碰见的,简要概括就几点:
- 请求并发
- 每次都有个最大请求上限
我当时的思路就是:
- 并发用 promise.all 控制
- 使用 idx 变量,然后 while 循环。当 idx > AllFetchNums 则跳出循环,否则就 idx += max
我的具体实现如下:
// 一个异步请求的示例
const fetchDemo = fetch("https://mock.cangdu.org/mock/5fa25923bcab7337c1b1c274/simple_shopping/product_list")
// 总共需要请求的次数
const lens = 23;
// 每次最大的请求数量
const max = 5;
// 假设有这么多次的请求
const fetchDemoArr = new Array(lens).fill(fetchDemo);
// 设定下标
let idx = 0;
// 当 idx 小于总共次数的时候就进行循环处理
while(idx < lens) {
// 每次都取到最大的请求数量
const curArr = fetchDemoArr.slice(idx, idx + max);
// 使用 promise.all 进行并发请求
Promise.all(curArr)
.then(
res => {
console.log(res);
})
.catch(
err => {
console.log(err);
}
)
// 下标累加
idx += max;
}
如果有什么纰漏和建议,希望能给点建议。
网友评论