@babel/plugin-proposal-async-generator-functions
NOTE: This plugin is included in
@babel/preset-env
, in ES2018
Example
In
async function* agf() { await 1; yield 2; }
Out
var _asyncGenerator = ... let agf = (() => { var _ref = _asyncGenerator.wrap(function* () { yield _asyncGenerator.await(1); yield 2; }); return function agf() { return _ref.apply(this, arguments); }; })();
For await example
async function f() { for await (let x of y) { g(x); } }
Example Usage
async function* genAnswers() { var stream = [Promise.resolve(4), Promise.resolve(9), Promise.resolve(12)]; var total = 0; for await (let val of stream) { total += await val; yield total; } } function forEach(ai, fn) { return ai.next().then(function(r) { if (!r.done) { fn(r); return forEach(ai, fn); } }); } var output = 0; forEach(genAnswers(), function(val) { output += val.value; }).then(function() { console.log(output); // 42 });
Installation
npm install --save-dev @babel/plugin-proposal-async-generator-functions
Usage
With a configuration file (Recommended)
{ "plugins": ["@babel/plugin-proposal-async-generator-functions"] }
Via CLI
babel --plugins @babel/plugin-proposal-async-generator-functions script.js
Via Node API
require("@babel/core").transformSync("code", { plugins: ["@babel/plugin-proposal-async-generator-functions"], });