async function
keyword can be used to define
async
functions inside expressions.
You can also define async functions using an async function statement .
async function [name]([param1[, param2[, ..., paramN]]]) {
statements
}
As of ES2015, you can also use 箭头函数 .
name
paramN
要被传递给函数的自变量名称。
statements
包含函数本体的语句。
An
async function
expression is very similar to, and has almost the same syntax as, an
async function statement
. The main difference between an async
function
expression and an async
function
statement is the
函数名称
, which can be omitted in
async function
expressions to create
anonymous
functions. An
async function
expression can be used as an
IIFE
(Immediately Invoked Function Expression) which runs as soon as it is defined. See also the chapter about
functions
了解更多信息。
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
};
const add = async function(x) { // async function expression assigned to a variable
let a = await resolveAfter2Seconds(20);
let b = await resolveAfter2Seconds(30);
return x + a + b;
};
add(10).then(v => {
console.log(v); // prints 60 after 4 seconds.
});
(async function(x) { // async function expression used as an IIFE
let p_a = resolveAfter2Seconds(20);
let p_b = resolveAfter2Seconds(30);
return x + await p_a + await p_b;
})(10).then(v => {
console.log(v); // prints 60 after 2 seconds.
});
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'async function' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
async function
expression
|
Chrome 55 | Edge 15 | Firefox 52 | IE No | Opera 42 | Safari 10.1 | WebView Android 55 | Chrome Android 55 | Firefox Android 52 | Opera Android 42 | Safari iOS 10.3 | Samsung Internet Android 6.0 |
nodejs
7.6.0
|
完整支持
不支持
用户必须明确启用此特征。
async function
AsyncFunction
object
await