10、两个异步请求函数,如何使用async和await改变执行顺序,实现结果传递?


要点:1、async、await 结合promise一起使用
     1、async应该要放在第一个异步函数的then回调里 then(async(res) => {})
     2、需要await的函数,采用new Promise(resolve,reject)的resolve(res)将执行结果传递出去
     3、需要await的函数调用后会返回一个promise,再通过then(res),即可获得上面resolve的结果 此处是重点!!!
     
 完整代码:
      <s-table ref="table" :columns="columns" :data="loadData" :alert="false" :rowKey="(record) => record.id">
          <span slot="opTime" slot-scope="text">
            <ellipsis
              :length="24"
              tooltip
              style="font-weight:bold"
              :class="text.includes(5)?'green':'red'">{{ text }}</ellipsis>
          </span>

           <span slot="objectNatureScopedSlots" slot-scope="text">
            {{ 'duiXiangXingZhi' | dictType(text) }}
          </span>

          <span slot="action" slot-scope="text, record">
            <span slot="action">
              <a @click="tableClick(record.taskCode)">
                <img src="@/assets/image/eye.png" alt="" srcset=""/>
              </a>
            </span>
          </span>
        </s-table>

 data(){
   return{
       // 加载数据方法 必须为 Promise 对象
        loadData: (parameter) => {
          return bussinessEscortBaseInfoPage(Object.assign(parameter, this.queryParam)).then(async(res) => {
            console.log('res.data',res.data)
            var taskArr=[]
            if(res.data.rows.length>0){
              res.data.rows.forEach((item,index)=>{
                console.log('item.taskCode',item.taskCode)
                taskArr.push(item.taskCode)
              })          
               this.task=taskArr.toString()
              await this.queryGrade(this.task).then(result=>{
                 result.forEach((item,index)=>{
                  if(item==null){
                    res.data.rows[index]={
                      ...res.data.rows[index],
                      departureTime:res.data.rows[index].departureTime.slice(0,10),
                      timeOfArrival:res.data.rows[index].timeOfArrival.slice(0,10),
                      grade:'无'
                    }
                  }else{
                    res.data.rows[index]={
                      ...res.data.rows[index],
                      departureTime:res.data.rows[index].departureTime.slice(0,10),
                      timeOfArrival:res.data.rows[index].timeOfArrival.slice(0,10),
                      grade:item.grade
                    }
                  }
                })
                console.log('res.data----',res.data) 
              }) 
            }
            return res.data
          })
        },
      
   }
 },
 methods:{
     //查询评价等级
      queryGrade(task){    
        return new Promise((resolve,reject)=>{
          var data={
            taskCode:task
          }
          businessSuperViseInspectionGrade(data).then(res=>{
            if(res.success){
              resolve(res.data)
            }else{
              this.$message.error('督导结果查询失败'+res.message)
              reject()
            }  
          })
        })
        
      },
 }

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM