# async await

本质上是 Generator 的语法糖,它优化了 then 链式调用。

单一的 then 链体现不出来,如果多层回调问题,async/await就能进一步优化它。

# async

async function async函数

async 的返回值是一个 promise 对象。

async 函数返回的 promise 的结果由函数执行的结果决定。

# await

await expression await表达式(一般都是一个 promise)

await 后面也可以是其他任意的表达式。 如果右侧不是 promise,得到的结果就是表达式的值, 就是它本身。

如果是 promise, 他会返回 promise 成功的值。

# 注意

  1. await 必须写在 async 函数中, 但是 async 函数中可以没有 await。
  2. 如果 await 的 promise 失败了,就会抛出异常,需要通过 try..catch 来补货处理。

# async/await 和 promise区别

  • 更加可读性。
  • promise传递中间值非常麻烦,async更加优雅。
  • 错误处理友好。async/await 可以用成熟的 try/catch。
  • 调试友好。