@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
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-proposal-async-do-expressions
yarn add --dev @babel/plugin-proposal-async-do-expressions
pnpm add --save-dev @babel/plugin-proposal-async-do-expressions
bun add --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"],
});