异步函数(async function)表达式
async function
关键字可用于定义表达式中的异步函数。
你还可以使用异步函数声明。
语法
js
async function (param0) {
statements
}
async function (param0, param1) {
statements
}
async function (param0, param1, /* … ,*/ paramN) {
statements
}
async function name(param0) {
statements
}
async function name(param0, param1) {
statements
}
async function name(param0, param1, /* … ,*/ paramN) {
statements
}
异步函数也可以使用箭头语法进行定义。
参数
name
可选-
函数名称,可省略。如果省略则这个函数将成为匿名函数。该名称仅可在本函数中使用。
paramN
可选-
传入函数的形参名称。
statements
可选-
构成函数主体的语句。
描述
示例
简单示例
js
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
// 赋值给变量的异步函数表达式
const add = async function (x) {
const a = await resolveAfter2Seconds(20);
const b = await resolveAfter2Seconds(30);
return x + a + b;
};
add(10).then((v) => {
console.log(v); // 4 秒后打印 60
});
// 用作 IIFE 的异步函数表达式
(async function (x) {
const p1 = resolveAfter2Seconds(20);
const p2 = resolveAfter2Seconds(30);
return x + (await p1) + (await p2);
})(10).then((v) => {
console.log(v); // 2 秒后打印 60
});
规范
Specification |
---|
ECMAScript Language Specification # sec-async-function-definitions |
浏览器兼容性
BCD tables only load in the browser