记录一下最近项目写的函数,遍历请求参数的数组发起请求并获取返回数据。
代码还有优化的地方,欢迎指出
// 批量请求
const handlePatchRequest = (requestList) => {
// requestList 传入数组 这里包含了请求的参数
const promisesList = [] // 请求队列
const resultList = [] // 请求结果队列
// 创建请求
requestList.forEach((params) => {
const promise = new Promise((resolve, reject) => {
api.xxx({ ...params })
.then((result) => {
// 获得接口返回的数据
resolve(result)
})
.catch((err) => {
reject(err)
})
})
promisesList.push(promise)
})
// 遍历请求队列,并处理返回结果
promisesList.forEach((promise) => {
promise
.then((data) => {
// 成功请求push到结果队列
resultList.push(data)
})
.catch((error) => {
// 处理请求错误 可以选择全局报错 也可以选择push到resultList后面再处理
})
})
return new Promise((resolve) => {
// 检查所有请求是否都完成
let completedCount = 0
function checkPromiseComplete() {
if (completedCount === paramsList.length) {
resolve(resultList)
}
}
promisesList.forEach((promise) => {
promise
.catch(() => {
// 可以在此处处理错误逻辑 把错误reject出去
})
.finally(() => {
completedCount++
checkPromiseComplete()
})
})
})
}
const requestList = [{id:1},{id:2},{id:3}]
async function getPatchResult(){
const resultList = await handlePatchRequest(requestList)
// ...
}