async/await 怎么用,如何捕获异常?

173 阅读1分钟

async/await可以和Promise结合在一起用

function 摇色子(){
  return new Promise((resolve,reject)=>{
      setTimeout(()=>{
        let n = parseInt(Math.random() *6 +1,10)
      resolve(n)
    },3000)
  })
}

async function test(){
    let n = await 摇色子()
  console.log(n)
}
test()

await只能放在async函数里面

用try catch可以捕获异常

function 猜大小(){
  return new Promise((resolve,reject)=>{
      setTimeout(()=>{
        let n = parseInt(Math.random() *6 +1,10)
      if(n>3){
          if(猜测 === "大"){
            resolve(n)
        }else{
            reject(n)
        }
      }else{
          if(猜测 === "小"){
            resolve(n)
        }else{
            reject(n)
        }
      }
    },3000)
  })
}

async function test(){
  try{
    let n = await 猜大小("大")
    console.log("好嗨哟" + n)
  }catch(error){
      console.log("输光了" + error)
  }    
}
test()

但需要猜测两次以上大小时,得用promise.all或promise.race

那为什么要用async/await呢?

因为更像同步函数。