Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского
Ключевое слово 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 | Status | Comment |
|---|---|---|
| ECMAScript Latest Draft (ECMA-262) Определение 'async function' в этой спецификации. |
Черновик | Initial definition in ES2017. |
Поддержка браузерами
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support | 55 | 52.0 (52.0) | ? | ? | 42 | ? |
| Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | ? | ? | 52.0 (52.0) | ? | 42 | ? | 55 |
Смотри также
async functionAsyncFunctionobjectawait