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的结果 此处是重点!!!
     
 完整代码:
                            {{ text }}          
                        {{ 'duiXiangXingZhi' | dictType(text) }}          
                                                                                               

 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()
            }  
          })
        })
        
      },
 }