async generator transform
Turn async generator functions and for-await statements to ES2015 generators
Turn async generator functions and for-await statements to ES2015 generators
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-transform-async-generator-functions
Usage
Via .babelrc
(Recommended)
.babelrc
{ "plugins": ["transform-async-generator-functions"] }
Via CLI
babel --plugins transform-async-generator-functions script.js
Via Node API
require("babel-core").transform("code", { plugins: ["transform-async-generator-functions"] });
References
© 2018 Sebastian McKenzie
Licensed under the MIT License.
http://babeljs.io/docs/plugins/transform-async-generator-functions/