From a55b575e8089ee6cab7c5c262a7e6db55d0e34d6 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:46:50 +0100 Subject: unslug es: move --- .../reference/operators/async_function/index.html | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 files/es/web/javascript/reference/operators/async_function/index.html (limited to 'files/es/web/javascript/reference/operators/async_function/index.html') diff --git a/files/es/web/javascript/reference/operators/async_function/index.html b/files/es/web/javascript/reference/operators/async_function/index.html new file mode 100644 index 0000000000..12e76e6ce5 --- /dev/null +++ b/files/es/web/javascript/reference/operators/async_function/index.html @@ -0,0 +1,102 @@ +--- +title: Expresión de función asíncrona +slug: Web/JavaScript/Referencia/Operadores/async_function +tags: + - Expresión Primaria + - JavaScript + - Operador + - función +translation_of: Web/JavaScript/Reference/Operators/async_function +--- +
{{jsSidebar("Operators")}}
+ +

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.

+ +

Sintaxis

+ +
async function [nombre]([param1[, param2[, ..., paramN]]]) {
+   enunciados
+}
+ +

A partir de ES2015 (ES6), también se pueden emplear funciones flecha.

+ +

Parámetros

+ +
+
name
+
El nombre de la función. Puede ser omitida, en cuy caso la función es anónima. El nombre es sólo local al cuerpo de la función The name is only local to the function body.
+
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ó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.

+ +

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

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}}
+ +

Compatibilidad de los navegadores

+ +
+ + +

{{Compat("javascript.operators.async_function_expression")}}

+
+ +

Ver también

+ + -- cgit v1.2.3-54-g00ecf