js-await代替promise优化代码

原来的逻辑

const req = () => new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('req end')
      resolve(true)
    }, 500)
})
const confirmDialog = (isConfirm) => {
  return new Promise((resolve, reject) => {
    if(isConfirm) {
      resolve(true)
    } else {
      reject(null)
    }
  })
}
async function isAuth() {
  const isConfirm = true
  let hadAuth = await req()
  return new Promise((resolve) => {
    if(hadAuth) {
      confirmDialog(isConfirm).then(() => {
        console.log('jump to url')
      }).catch(e => {
        resolve(false)
      })
    } else {
      resolve(true)
    }
  })
}

async function handleSubmit() {
  const hadAuth = await isAuth()
  if(!hadAuth) return console.log("notAuth")
  console.log('hadAuth! continue...')
}
handleSubmit()

优化:

const req = () => new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log('req end')
    // resolve(true) // 已认证
    resolve(false) // 未认证
  }, 500)
})
const confirmDialog = (isConfirm) => {
  return new Promise((resolve, reject) => {
    if(isConfirm) {
      resolve(true)
    } else {
      reject(null)
    }
  })
}
async function isAuth() {
  // 未认证需要弹窗确认则跳转认证页面,取消则留在当前页面
  const isConfirm = false // 取消
  // const isConfirm = true // 确认
  let hadAuth = await req()
  if(hadAuth) return true
  let hadConfirm = await confirmDialog(isConfirm)
  if(hadConfirm) return console.log('jump to url')
}
async function handleSubmit() {
  const hadAuth = await isAuth().catch(()=>{}) // 里面不用返回promise,有async-await的函数则表示该函数是promise包裹,可以使用await去等待。
  if(!hadAuth) return console.log("notAuth")
  console.log('hadAuth! continue...')
}
handleSubmit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值