Saltar al contenido principal

@babel/plugin-proposal-async-do-expressions

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

La expresión async do { .. } ejecuta un bloque (con una o varias sentencias) en un contexto asíncrono, y el valor de finalización de la última sentencia dentro del bloque se convierte en el valor de finalización del código asíncrono.

Ejemplo

Realizar solicitudes HTTP en paralelo

JavaScript
Promise.all([
async do {
const result = await fetch('https://example.com/A');
await result.json()
},
async do {
const result = await fetch('https://example.org/B');
await result.json()
},
]).then(([a, b]) => {
console.log("example.com/A", a);
console.log("example.org/B", b);
})

se transformará en

JavaScript
Promise.all([
(async () {
const result = await fetch('https://example.com/A');
return await result.json()
})(),
(async () {
const result = await fetch('https://example.org/B');
return await result.json()
})(),
]).then(([a, b]) => {
console.log("example.com/A", a);
console.log("example.org/B", b);
})

Instalación

npm install --save-dev @babel/plugin-proposal-async-do-expressions

Uso

Mediante un archivo de configuración (Recomendado)

babel.config.json
{
"plugins": ["@babel/plugin-proposal-async-do-expressions"]
}

Nota: Este plugin transpila async do {} a funciones flecha asíncronas de ES2017 async () => {}. Si apuntas a motores más antiguos, como Node.js 6 o IE 11, añade también @babel/plugin-transform-async-to-generator:

babel.config.json
{
"plugins": [
"@babel/plugin-proposal-async-do-expressions",
"@babel/plugin-transform-async-to-generator"
]
}

Mediante la CLI

Shell
babel --plugins @babel/plugin-proposal-async-do-expressions script.js

Mediante la API de Node

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-proposal-async-do-expressions"],
});

Referencias