1、async是?
定义异步函数(内部通常有异步操作),返回Promise对象
(函数返回Promise→显式返回return的Promise;
函数返回非Promise→隐式返回Promise.resolve()包装的return值;)
2、await在等啥?
只能放在async函数中,等待右侧表达式结果
(函数→结果=return值;
字符串→结果=字符串;)
3、await等到了又要干哈?
wait 等到了它要等的东西,一个 Promise 对象,或者其它值,
- 如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
- 如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。
阻塞后面的代码,先执行async外部的同步代码,同步代码执行完再回到async内部,拿到运算结果
(表达式返回Promise→等待Promise对象fulfilled,再将resolve参数作为表达式的运算结果;
表达式返回非Promise→直接作为表达式的运算结果;)
执行顺序:
(1)await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成;
(2)若 Promise 正常处理(Resolved,又称Fulfilled),其回调resolve函数的参数作为 await 表达式的值,继续执行 async function;
(3)若 Promise 处理异常(Rejected),await 表达式会把 Promise 的异常原因抛出;