async function expression
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since апÑÐµÐ»Ñ 2017 г..
ÐлÑÑевое Ñлово async function иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°ÑинÑ
Ñонной ÑÑнкÑии внÑÑÑи вÑÑажений.
ÐÑ Ñакже можеÑе опÑеделиÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑе ÑÑнкÑии пÑи помоÑи инÑÑÑÑкÑии async function.
СинÑакÑиÑ
async function [name]([param1[, param2[, ..., paramN]]]) {
statements
}
СоглаÑно ÑпеÑиÑикаÑии ES2015, Ð²Ñ Ñакже можеÑе иÑполÑзоваÑÑ ÑÑÑелоÑнÑе ÑÑнкÑии.
ÐаÑамеÑÑÑ
name-
ÐÐ¼Ñ ÑÑнкÑии. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑен, в ÑÑом ÑлÑÑае говоÑÑÑ Ð¾Ð± анонимной ÑÑнкÑии. ÐÐ¼Ñ Ð¸ÑполÑзÑеÑÑÑ ÑолÑко в Ñеле ÑÑнкÑии.
paramN-
ÐÐ¼Ñ Ð°ÑгÑменÑа, пеÑедаваемого ÑÑнкÑии.
statements-
ÐнÑÑÑÑкÑии, ÑоÑÑавлÑÑÑие Ñело ÑÑнкÑии.
ÐпиÑание
ÐÑÑажение async function оÑÐµÐ½Ñ Ð¿Ð¾Ñ
оже, и Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾ÑÑи ÑÐ¾Ñ Ð¶Ðµ ÑинÑакÑиÑ, ÑÑо и async function statement. Ðлавное оÑлиÑие Ð¼ÐµÐ¶Ð´Ñ Ð²ÑÑажениÑми async function и обÑÑвлениÑми async function заклÑÑаеÑÑÑ Ð² имени ÑÑнкÑии, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено в вÑÑажении async function Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð¹ ÑÑнкÑии. ÐÑÑажение async function можно иÑполÑзоваÑÑ Ð² виде IIFE (Immediately Invoked Function Expression), и оно бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑено ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле обÑÑвлениÑ. СмоÑÑиÑе Ñакже Ð³Ð»Ð°Ð²Ñ Ð¾ ÑÑнкÑиÑÑ
.
ÐÑимеÑÑ
>ÐÑоÑÑой пÑимеÑ
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
(async function (x) {
// вÑÑажение аÑинÑ
Ñонной ÑÑнкÑии в виде IIFE
var a = resolveAfter2Seconds(20);
var b = resolveAfter2Seconds(30);
return x + (await a) + (await b);
})(10).then((v) => {
console.log(v); // вÑÐ²ÐµÐ´ÐµÑ 60 поÑле 2 ÑекÑнд.
});
var add = async function (x) {
// назнаÑение вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°ÑинÑ
Ñонной ÑÑнкÑии пеÑеменной
var a = await resolveAfter2Seconds(20);
var b = await resolveAfter2Seconds(30);
return x + a + b;
};
add(10).then((v) => {
console.log(v); // вÑÐ²ÐµÐ´ÐµÑ 60 поÑле 4 ÑекÑнд.
});
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-async-function-definitions > |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
async functionAsyncFunctionobjectawait