注意:
使用 async / await
, 搭配 promise
, 可以通过编写形似同步的代码来处理异步流程, 提高代码的简洁性和可读性. 本文介绍 async / await
的基本用法和一些注意事项.
await
引用MDN的介绍:
await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用.
await 的使用语法非常简单:
[return_value] = await expression;
其中 expression 是一个 Promise 对象或者任何要等待的值;
而 await expression 的执行结果有以下几种情况:
若 expression 是一个 Promise 对象, 并且其以值 x 被 fulfilled, 则返回值为 x.
若 expression 是一个 Promise 对象, 并且其以异常 e 被 rejected, 则抛出异常 e.
若 expression 不是 Promise 对象, 则会将 expression 处理成一个以 expression 值被 fulfilled 的 Promise 对象, 然后返回这个 Promise 对象的最终值 (即 expression 值). 这种用法没太大意义, 因此实际使用时还是尽量在 await 后跟一个 Promise 对象.
另外需要注意的是, await 在等待 Promise 对象时会导致 async function 暂停执行, 一直到 Prom