# async await
本质上是 Generator 的语法糖,它优化了 then 链式调用。
单一的 then 链体现不出来,如果多层回调问题,async/await就能进一步优化它。
# async
async function async函数
async 的返回值是一个 promise 对象。
async 函数返回的 promise 的结果由函数执行的结果决定。
# await
await expression await表达式(一般都是一个 promise)
await 后面也可以是其他任意的表达式。 如果右侧不是 promise,得到的结果就是表达式的值, 就是它本身。
如果是 promise, 他会返回 promise 成功的值。
# 注意
- await 必须写在 async 函数中, 但是 async 函数中可以没有 await。
- 如果 await 的 promise 失败了,就会抛出异常,需要通过 try..catch 来补货处理。
# async/await 和 promise区别
- 更加可读性。
- promise传递中间值非常麻烦,async更加优雅。
- 错误处理友好。async/await 可以用成熟的 try/catch。
- 调试友好。