async 函数
由 Brian Terlson 提出。
async 函数有如下形式:
- 函数声明:
async function foo() {};
- 函数表达式:
const foo = async function() {};
- 方法定义:
let obj = { async foo() {} };
- 箭头函数:
const foo = async () => {};
async 函数总会返回 Promise 实例。
/** 返回一个 fulfilling 实例 */
async function asyncFunc() {
return 123;
}
asyncFunc()
.then(x => console.log(x))
/** 返回一个 rejecting 实例 */
async function asyncFunc() {
throw new Error('Problem!')
}
asyncFunc()
.catch(err => console.log(err))
await
操作符可等待 Promise
,其只能在 async
函数内使用。用法如下:
[rv] = await expression
其中,expression
是 Promise
对象或任何数值。rv
是 Promise
成功后的固定值或者其他数值本身(当 expression
不是 Promise
类型时)。
- Async functions - Dr. Axel Rauschmayer
- async 函数 - 阮一峰
- async functio | mdn
- await | mdn
- Understanding JavaScript's async await | ponyfoo.com - Nicolás Bevacqua, 2016/02/04