遍历数组生成promise队列并获得返回数据的方法

记录一下最近项目写的函数,遍历请求参数的数组发起请求并获取返回数据。
代码还有优化的地方,欢迎指出

// 批量请求
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)
	// ...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值