适用范围:
- 一个请求的数据内容太长了, 超过api的上限
- 需要拆分成多次api请求, 并将结果汇总起来
算法思想:
1. 每个请求都进行校验
- 请求得到响应之后, 马上进行校验, 然后把校验信息保存到全局数组中
- 如果失败, 就保存失败的相关信息
- 如果成功, 就保存成功的相关信息
2. 等待所有请求都响应或请求失败再进行处理
2.1. 用一个全局数组存储每组请求的信息
每组请求对应一个对象, 包含属性:
- status: ‘unrespon’|‘timeout’|‘success’|string
- data: any
- error: Error 每个请求的信息都初始化为’unrespon’
2.2. 每一个请求完成之后, 都查询自己是不是最后一个请求
- 遍历查询每一个元素, 如果有一个元素为’unrespon’, 就标记为为响应完
- 用some()方法
最后请求的处理方案:
就报错或着继续执行业务逻辑
- 如果是解析错误:
- 把每一个产生错误的请求的错误汇总到一个数组中, 并返回
- 用filter()方法
- 把每一个产生错误的请求的错误汇总到一个数组中, 并返回
3. 处理超时和请求错误
- 错误处理函数把错误信息保存到全局数组中的对应位置
- 超时也作为错误传给错误处理函数
4. 延迟发送请求队列
防止请求堵塞
4.1. 挨个挨个发, 发完之后判断是否还有剩余请求
使用递归函数封装一层请求发送, 每次都将当前请求索引传递到下一层递归