--- title: async function expression slug: Web/JavaScript/Reference/Operators/async_function translation_of: Web/JavaScript/Reference/Operators/async_function ---
Ключевое слово async function
исползуется для определения асинхронной функции внутри выражений.
Вы также можете определить асинхронные функции при помощи инструкции async function.
async function [name]([param1[, param2[, ..., paramN]]]) { statements }
Согласно спецификации ES2015, вы также можете использовать стрелочные функции.
name
paramN
statements
Выражение async function
очень похоже, и имеет почти тот же синтаксис, что и {{jsxref('Statements/async_function', 'async function statement')}}. Главное отличие между выражениями async function
и объявлениями async function
заключается в имени функции, которое может быть опущено в выражении async function
для создания анонимной функции. Выражение async function
можно использовать в виде {{Glossary("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 |
---|---|---|
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}} | {{Spec2('ESDraft')}} | Initial definition in ES2017. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | {{CompatChrome(55)}} | {{CompatGeckoDesktop("52.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera(42)}} | {{CompatUnknown}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("52.0")}} | {{CompatUnknown}} | {{CompatOpera(42)}} | {{CompatUnknown}} | {{CompatChrome(55)}} |