js 渐进式调用接口如何实现?

作者站长头像
站长
· 阅读数 10

场景:js vue 1000个 ajax 接口代码如何实现 先调用 5个接口 5个接口都有响应了(成功或失败)在调用5个接口,直到将1000个接口全部请求

回复
1个回答
avatar
test
2024-07-13

可以使用循环和递归的方式来实现渐进式调用接口:

// 将要调用的接口列表
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 调用多个接口,并使用递归的方式来实现渐进式调用。每次调用时,会从接口列表中取出一定数量的接口进行调用,然后等待所有接口的响应,如果还有剩余的接口,就再次递归调用,直到所有接口都被调用完毕。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容