async await

定义

  1. 本质是Generator函数和Promise的语法糖(源码类似于上面的代码)
  2. 解释:
    (1) async(异步的) : 用于声明一个异步函数
    (2) await : 必须与async搭配使用

async(异步函数)

  1. 使用
async function foo (){
  console.log(1)
}
console.log(0)
foo()
console.log(2)
-->
  0,1,2
  1. 与普通函数区别
    (1) 异步函数的返回值一定是一个promise, resolve的值就是异步函数return的值,不return默认返回undefined
    (2) 异步函数的异常结果会作为返回的promise的rejected状态的值,需要通过catch捕获

    注意: 默认情况下,如果不写一些特殊代码,执行顺序和普通函数无异

await

  1. 使用: 专门用来解析promise,返回promise的resolve结果,如果reject则将reject结果作为异步函数返回值的promise的rejected状态
    (async () => {
      const res=await {then(resolve) {resolve(111)} }
      console.log(res)
    })()

注意:await会阻止后续代码执行,必须等到解析的promise对象resolve之后才会正确执行接下来的代码,reject则抛出异常

值的注意: 由于await需要解析完promise的结果才会继续执行接下来的代码,所以await之后的代码相等于一起和.then进入了微任务队列


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!