js 渐进式调用接口如何实现?
场景:js vue 1000个 ajax 接口
代码如何实现 先调用 5个接口 5个接口都有响应了(成功或失败)在调用5个接口,直到将1000个接口全部请求
回答:
可以使用循环和递归的方式来实现渐进式调用接口:
// 将要调用的接口列表const apiList = [ '/api/1', '/api/2', '/api/3', '/api/4', '/api/5', '/api/6', '/api/7', '/api/8', '/api/9', '/api/10'];
// 每次调用的接口数量
const batchSize = 5;
async function callApi(apiList) {
// 取出本次要调用的接口列表
const currentBatch = apiList.splice(0, batchSize);
try {
// 调用接口
await Promise.all(currentBatch.map(api => axios.get(api)));
// 如果还有剩余的接口,则递归调用
if (apiList.length > 0) {
callApi(apiList);
}
} catch (error) {
console.error(error);
}
}
// 开始调用
callApi(apiList);
上面的代码使用了 Promise.all 调用多个接口,并使用递归的方式来实现渐进式调用。每次调用时,会从接口列表中取出一定数量的接口进行调用,然后等待所有接口的响应,如果还有剩余的接口,就再次递归调用,直到所有接口都被调用完毕。
回答:
// 模拟生成1000个promise let promiseList = []
for (let i = 0; i < 1000; i++) {
promiseList.push(Promise.resolve(i))
}
for (let i = 0; i < 200; i++) {
Promise.allSettled(promiseList.splice(0, 5)).
then((results) => results.forEach((result) => console.log(result.status, result)));
}
Promise.allSettled() 方法以 promise 组成的可迭代对象作为输入,并且返回一个 Promise 实例。当输入的所有 promise 都已敲定时(包括传递空的可迭代类型),返回的 promise 将兑现,并带有描述每个 promsie 结果的对象数组。
以上是 js 渐进式调用接口如何实现? 的全部内容, 来源链接: utcz.com/p/933428.html