• 循环里调用接口


    在做项目时我遇到了这样一个情景,要获取多个公司的公司信息,而获取公司信息需要传公司名称去调接口。

    此时多个公司是以数组形式展示:let companies  = ['公司A ','公司B ','公司C ','公司D ']。

    开始我在promise.all里面做循环遍历,代码如下:

    const res = await Promise.all(
          companies.map((name) => {
              return services.getCompanyDetail({ name }//这里是调用获取公司IdCode的接口
          })
    )

    此时发现,虽然使用了Promise.all,但只调用了一次接口,也就是只获取了‘公司A’的公司信息,虽然返回的接口res是个数组,且长度为4,但这4个都是公司A的公司信息。

    原因是await只会等待Promise.all执行完,再执行下面的,但里面的map循环不会等待接口调用完。

    此时我改用递归调用:

    let result = await getCompanyCode(companies,companies.length,[])
    
    
    const getCompanyCode =async (companies,index,arr) => {
      let res = await services.getCompanyDetail({ name:partners[index-1] })//调接口
      arr.push(res.data)
      if(index!==1){ 
        await getCompanyCode(partners,index-1,arr)       
      }
      return arr
    }

    此时result返回的就是4个公司信息的数组啦

  • 相关阅读:
    vue类似tab切换的效果,显示和隐藏的判断。
    vue 默认展开详情页
    vue echarts圆角阴影效果
    vue画图运用echarts
    随机函数rand()
    Qt解析CSV文件
    Qt生成CSV 文件
    QRegExp解析
    Qt中csv文件的导入与导出
    Qt 生成word、pdf文档
  • 原文地址:https://www.cnblogs.com/kaiqinzhang/p/13891263.html
Copyright © 2020-2023  润新知