适用范围:

  1. 一个请求的数据内容太长了, 超过api的上限
  2. 需要拆分成多次api请求, 并将结果汇总起来

算法思想:

1. 每个请求都进行校验

  1. 请求得到响应之后, 马上进行校验, 然后把校验信息保存到全局数组中
    1. 如果失败, 就保存失败的相关信息
    2. 如果成功, 就保存成功的相关信息

2. 等待所有请求都响应或请求失败再进行处理

2.1. 用一个全局数组存储每组请求的信息

每组请求对应一个对象, 包含属性:

  1. status: ‘unrespon’|‘timeout’|‘success’|string
  2. data: any
  3. error: Error 每个请求的信息都初始化为’unrespon’

2.2. 每一个请求完成之后, 都查询自己是不是最后一个请求

  1. 遍历查询每一个元素, 如果有一个元素为’unrespon’, 就标记为为响应完
    1. some()方法

最后请求的处理方案:

就报错或着继续执行业务逻辑

  1. 如果是解析错误:
    1. 把每一个产生错误的请求的错误汇总到一个数组中, 并返回
      1. filter()方法

3. 处理超时和请求错误

  1. 错误处理函数把错误信息保存到全局数组中的对应位置
  2. 超时也作为错误传给错误处理函数

4. 延迟发送请求队列

防止请求堵塞

4.1. 挨个挨个发, 发完之后判断是否还有剩余请求

使用递归函数封装一层请求发送, 每次都将当前请求索引传递到下一层递归

如果有就延迟发送下一个请求