ES6 async 函数

160 阅读1分钟

async

  • async是es7才有的和异步操作有关的关键字,和promise和generor关系密切

语法

  • async function name(params){code}

返回值

  • 返回一个 Promise 对象,可使用then方法添加回调函数
 async function asyncReturn(){
     return "asyncReturnValue"
 }
 
 asyncReturn().then((v)=>{
     console.log(v); 
 })
 
 //输出asyncReturnValue

await

语法

  • await 顾名思义是等待,等待一个promise对象。返回处理promise后的结果 const saveReturn = await expression

返回值

  • 返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身
  • 如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。
  • 正常情况下,await 命令后面是一个 Promise 对象,它也可以跟其他值,如字符串,布尔值,数值以及普通函数。
function promiseCase(){
  return new Promise(resolve =>{
    setTimeout(()=>{
      resolve('data')
    },2000)
  })
}

async function asyncCase(){
  const saveReturn = await promiseCase();
  console.log(saveReturn);
  console.log('dataBehind');
}

asyncCase();

//输出:
//data
//dataBehind

两者关系

  • await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。
  • async可以不用搭配await使用,如果需要返回一个promise对象可以,在函数前面添加async