Aller au contenu principal

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

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

L'expression async do { .. } exécute un bloc (contenant une ou plusieurs instructions) dans un contexte asynchrone, et la valeur de complétion de la dernière instruction du bloc devient la valeur de complétion du code asynchrone.

Exemple

Émission de requêtes HTTP en parallèle

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

sera transformé 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);
})

Installation

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

Utilisation

Avec un fichier de configuration (Recommandé)

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

Note : Ce plugin transpile async do {} en fonction fléchée asynchrone ES2017 async () => {}. Si vous ciblez un moteur plus ancien, comme Node.js 6 ou IE 11, ajoutez également @babel/plugin-transform-async-to-generator :

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

Via CLI

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

Via l'API Node

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

Références