Expresión de función asíncrona
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
La palabra claveasync function
puede ser utilizada para definir funcionesasync
dentro de expresiones.
También se pueden definir funciones asíncronas utilizando unenunciado de función asíncrona.
Sintaxis
async function [nombre]([param1[, param2[, ..., paramN]]]) { enunciados}
A partir de ES2015 (ES6), también se pueden emplearfunciones flecha.
Parámetros
name
El nombre de la función. Puede ser omitida, en cuyo caso la función esanónima. El nombre es sólo local al cuerpo de la función.
paramN
El nombre de un argumento a ser pasado a la función.
statements
Los enunciados que componen el cuerpo de la función.
Descripción
Una expresiónasync function
es muy similar, y casi tiene la misma sintaxis que, unaasync function statement
. La principal diferencia entre una expresiónasync function
y un enunciadoasync function
es elnombre de la función, que puede ser omitido en una expresiónasync function
para crear funcionesanonymous. Una expresiónasync function
puede ser utilizada como unIIFE (Expresión de función inmediatamente invocada, Immediately Invoked Function Expression) que se ejecuta tan rápido como es definida. Ver el capítulo sobrefunciones para tener más información.
Ejemplos
Ejemplo sencillo
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.});
Especificaciones
Specification |
---|
ECMAScript® 2026 Language Specification # sec-async-function-definitions |