Vai al contenuto principale

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

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

L'espressione async do { .. } esegue un blocco (con una o più istruzioni) in un contesto asincrono, e il valore di completamento dell'ultima istruzione all'interno del blocco diventa il valore di completamento del codice asincrono.

Esempio

Emissione di richieste HTTP in parallelo

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);
})

verrà trasformato in

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);
})

Installazione

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

Utilizzo

Con un file di configurazione (Consigliato)

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

Nota: Questo plugin trasforma async do {} nella funzione freccia asincrona ES2017 async () => {}. Se si utilizza un motore più vecchio, ad esempio Node.js 6 o IE 11, è necessario aggiungere anche @babel/plugin-transform-async-to-generator:

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

Tramite CLI

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

Tramite Node API

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

Riferimenti