Aller au contenu principal

@babel/plugin-transform-async-to-generator

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 →

info

Ce plugin est inclus dans @babel/preset-env, au sein d'ES2017

Dans Babel 7, transform-async-to-module-method a été fusionné dans ce plugin

Exemple

Entrée

JavaScript
async function foo() {
await bar();
}

Sortie

JavaScript
var _asyncToGenerator = function (fn) {
...
};
var foo = _asyncToGenerator(function* () {
yield bar();
});

Sortie avec options

Transforme les fonctions asynchrones en coroutine Bluebird (mises en garde)

JavaScript
var Bluebird = require("bluebird");

var foo = Bluebird.coroutine(function*() {
yield bar();
});

Installation

npm install --save-dev @babel/plugin-transform-async-to-generator

Utilisation

Avec un fichier de configuration (Recommandé)

Sans options :

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

Avec options :

babel.config.json
{
"plugins": [
[
"@babel/plugin-transform-async-to-generator",
{
"module": "bluebird",
"method": "coroutine"
}
]
]
}

Via CLI

Shell
babel --plugins @babel/plugin-transform-async-to-generator script.js

Via l'API Node

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-async-to-generator"],
});

Mises en garde

Erreur d'exécution Bluebird avec valeur non-Promise

Lorsqu'on utilise await avec des valeurs qui ne sont pas des promesses, Bluebird générera l'erreur "Error: A value was yielded that could not be treated as a promise". Babel ne pouvant pas gérer automatiquement cette erreur d'exécution, vous devez transformer manuellement la valeur en promesse.

async function foo() {
- await 42;
+ await Promise.resolve(42);
}

Références