--- title: Expresión de función asíncrona slug: Web/JavaScript/Reference/Operators/async_function tags: - Expresión Primaria - JavaScript - Operador - función translation_of: Web/JavaScript/Reference/Operators/async_function original_slug: Web/JavaScript/Referencia/Operadores/async_function ---
La palabra clave async function
puede ser utilizada para definir funciones async
dento de expresiones.
También se pueden definir funciones asíncronas utilizando un enunciado de función asíncrona.
async function [nombre]([param1[, param2[, ..., paramN]]]) { enunciados }
A partir de ES2015 (ES6), también se pueden emplear funciones flecha.
name
paramN
statements
Una expresión async function
es miuy similar, y casi tiene la misma sintaxis que, una {{jsxref('Statements/async_function', 'async function statement')}}. La principal diferencia entre una expresión async function
y un enunciado async function
es el nombre de la función, que puede ser omitido en una expresión async function
para crear funciones anonymous. Una expresión async function
puede ser utilizada como un {{Glossary("IIFE")}} (Expresión de función inmediatamente invocada, Immediately Invoked Function Expression) que se ejecuta tan rápido como es definida. Ver el capítulo sobre funciones para tener más información.
function resuelve2SegundosDespues(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); }; const agregar= async function(x) { // Expresión de una función asíncrona asignada a una variable let a = await resuelve2SegundosDespues(20); let b = await resuelve2SegundosDespues(30); return x + a + b; }; agregar(10).then(v => { console.log(v); // imprime 60 después de 4 segundos. }); (async function(x) { // expresión de una función asíncrona utilizada como una IIFE let p_a = resuelve2SegundosDespues(20); let p_b = resuelve2SegundosDespues(30); return x + await p_a + await p_b; })(10).then(v => { console.log(v); // imprime 60 después de 2 segundos. });
Especificación |
---|
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}} |
{{Compat("javascript.operators.async_function_expression")}}