--- title: Expressão da função async slug: Web/JavaScript/Reference/Operators/async_function tags: - Experimental - Expressão Primária - Função - Operador translation_of: Web/JavaScript/Reference/Operators/async_function ---
async function [nome]([parametro1[, parametro2[, ..., parametroN]]]) { declarações }
Como no ES2015, você tambem pode usar arrow functions.
nome
parametroN
declarações
Uma expressão async function
é muito similar, e tem quase a mesma sintaxe de uma {{jsxref('Statements/async_function', 'declaração async function')}}. A principal diferença entre uma expressão async function
e uma declaração async function
é o nome da função, que pode ser omitido em expressões async function
para criar funções anônimas. Uma expressão async function
pode ser utilizada como um {{Glossary("IIFE")}} (Immediately Invoked Function Expression, em tradução livre: Expressão de Função Invocada Imediatamente) que roda assim que definido. Veja também o capítulo sobre funções para mais informações.
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); }; (async function(x) { // async function expression usada como uma IIFE var a = resolveAfter2Seconds(20); var b = resolveAfter2Seconds(30); return x + await a + await b; })(10).then(v => { console.log(v); // imprime 60 após 2 segundo. }); var add = async function(x) { // async function expression atribuída a uma variável var a = await resolveAfter2Seconds(20); var b = await resolveAfter2Seconds(30); return x + a + b; }; add(10).then(v => { console.log(v); // imprime 60 após 4 segundos. });
Especificação | Status | Comentário |
---|---|---|
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}} | {{Spec2('ESDraft')}} | Definição inicial no 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)}} |