JavaScript 中的 async/await
async/await 是基于 Promise、以同步方式编写异步代码的语法糖。
简单来说:
async 放置在函数定义前,函数总是返回一个 Promise,返回值会自动包裹在已解析的 Promise 中。
await 让 JavaScript 等待 Promise 处理完成并返回结果。
async 函数
async 关键字用于声明异步函数。
异步函数声明会创建一个 AsyncFunction 对象。每次调用异步函数时,它都会返回一个新的 Promise —— 该 Promise 会在异步函数返回值时兑现(resolve),或在异步函数内部抛出未捕获异常时拒绝(reject)。
异步函数可包含零个或多个 await 表达式。await 表达式会暂停函数执行,直至其等待的 Promise 兑现(fulfilled)或拒绝(rejected),从而让返回 Promise 的函数表现得如同同步函数一般。该 Promise 的兑现值会被视作 await 表达式的返回值。使用 async 和 await 能够在异步代码中使用常规的 try/catch 代码块(捕获异常)。
await 语法
使用格式:
| |
参数:
- expression:Promise 对旬,或 thenable 对象,或其它须等待的值
返回值:
Promise 或 thenable 对象的兑现值,若该表达式并非 thenable 类型,则为表达式自身的值。
记住 3 点
- async 函数总是返回一个 Promise
- await 只能在 async 函数中使用
- await 等待一个 Promise 完成
使用 async/await 的好处
- 提高代码的可读性
- 易于调试、编写测试用例
- 便于错误处理
- 减少内嵌