async await 配合promise封装异步方法

2019-03-28  本文已影响0人  磨人的磨磨虫

废话不多说直接上代码:

function test(mark){
  return new Promise((resolve, reject)=>{
    if(mark){
      setTimeout(()=>{
         let data={
           code:0,
           id:666,
           title:'测试' 
         }   
         resolve(data)
      },800)
    }else{
      reject({
        code:-1,
        msg:'参数异常'
      })
    }
  })
}

(async ()=>{
  try{
    console.log(1)
    let data=await test(true)
    console.log(2)
    console.log(data)   
    //执行结果
    //1
    //2
    //{code:0,id:666, title:'测试' }
 
    let data2=await test(false)
  }catch(e){
    console.log(e)//{code:-1,msg:'参数异常'}
  }
  
})()

看了代码发现我加了try catch,为什么呢,因为test函数return 的不一定是 json数据 当不满足条件执行执行后会reject是promise本身,所以会导致后面let data2=await test(false) 报错。

上一篇 下一篇

猜你喜欢

热点阅读