async 是“异步”的简写,而 await 能够认为是 async wait 的简写。异步
因此应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。async
async 函数是什么?一句话,它就是 Generator 函数的语法糖。async
函数就是将 Generator 函数的星号(*
)替换成async
,将yield
替换成await
,仅此而已。函数
async 函数返回的是一个 Promise 对象。code
async 函数(包含函数语句、函数表达式、Lambda表达式)会返回一个 Promise 对象,若是在函数中 return
一个直接量,async 会把这个直接量经过 Promise.resolve()
封装成 Promise 对象。对象
若是它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。it
若是它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,而后获得 resolve 的值,做为 await 表达式的运算结果。io