vue async/await解决异步

当一个方法中有多个异步方法,可以通过async/await变为同步,执行完上一个异步,才继续执行接下来的代码。

例:多个子组件中有promise构造函数

子组件1

      SubmitForm() {
        let p = new Promise(function(resolve, reject){   // promise
          this.$refs['FormInline'].validate((valid) => { // 表单验证
            // console.log(valid)
            if (valid) {
              resolve(this.formInline)     // 验证成功返回表单
            } else {
              resolve('error')             
            }
          })
        })
        return p
      },

子组件2

    submitForm() {
      let self = this
      let p = new Promise(function(resolve, reject){
        self.$refs['formInline'].validate((valid) => {
          if (valid) {
            resolve(self.formInline)
          } else {
            resolve('error')
          }
        })
      })
      return p
    }

父组件中调用拼装

 // 保存按钮
// methods方法前加async
    async saveForm (intStatus) {
      let baseInfoFlag = false 
// 设置baseInfoFlag,trusteeshipFlag,都成功才能执行下一步    
// 调用子组件的方法(promise)
// 方法前面加await
      await  this.$refs.baseInfo.submitForm().then(data => { 
        console.log('saveForm:::baseInfo', data)
        if (data !== 'error') {
          baseInfoFlag = true
          this.baseInfoForm = data
        } else {
          baseInfoFlag = false
        }
      })

      let trusteeshipFlag = false
      await this.$refs.trusteeship.SubmitForm().then(data => {
        console.log('saveForm:::trusteeship', data)
        if (data !== 'error') {
          trusteeshipFlag = true
          this.trusteeshipForm = data
        } else {
          trusteeshipFlag = false
        }
      })
// 两个都验证通过后返回true
      if (baseInfoFlag && trusteeshipFlag) {
        console.log('baseInfoForm::', this.baseInfoForm)
        console.log('trusteeshipForm', this.trusteeshipForm)
        this.submit(intStatus)  // 成功则执行调用接口方法,执行一下步
      } else {
        console.log('失败')
        this.backTop()  // 失败页面返回顶部
      }
    },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值