Vai al contenuto principale

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

Traduzione Beta Non Ufficiale

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

informazioni

Questo plugin è incluso in @babel/preset-env, in ES2017

In Babel 7, transform-async-to-module-method è stato integrato in questo plugin

Esempio

In

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

Out

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

Out con opzioni

Trasforma le funzioni async in coroutine Bluebird (avvertenze)

JavaScript
var Bluebird = require("bluebird");

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

Installazione

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

Utilizzo

Con un file di configurazione (Consigliato)

Senza opzioni:

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

Con opzioni:

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

Tramite CLI

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

Tramite Node API

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

Avvertenze

Bluebird non-promise runtime error

Quando si utilizza await con valori non-promise, Bluebird genererà "Error: A value was yielded that could not be treated as a promise". Poiché Babel non può gestire automaticamente questo errore di runtime, è necessario trasformare manualmente il valore in una promise.

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

Riferimenti