zoukankan      html  css  js  c++  java
  • 循环里调用接口

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

    此时多个公司是以数组形式展示: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个公司信息的数组啦

  • 相关阅读:
    小伙子的毕业设计
    mongoDB
    Java面试题笔试题收集
    react-router4 介绍
    React 组件间通信 总结
    react ajax
    react应用(基于react脚手架)
    React 之 组件生命周期
    组件收集表单数据
    组件的组合使用
  • 原文地址:https://www.cnblogs.com/kaiqinzhang/p/13891263.html
Copyright © 2011-2022 走看看