Socket
Socket
Sign inDemoInstall

@babel/plugin-proposal-async-generator-functions

Package Overview
Dependencies
81
Maintainers
4
Versions
74
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @babel/plugin-proposal-async-generator-functions

Turn async generator functions into ES2015 generators


Version published
Weekly downloads
9.4M
decreased by-1.26%
Maintainers
4
Created
Weekly downloads
 

Package description

What is @babel/plugin-proposal-async-generator-functions?

The @babel/plugin-proposal-async-generator-functions package is a Babel plugin that allows you to use async generator functions and for-await-of loops in your JavaScript code, which are part of the ECMAScript 2018 (ES9) specification. This plugin transforms async generator functions and for-await-of loops into code that can run in environments that do not support these features natively.

What are @babel/plugin-proposal-async-generator-functions's main functionalities?

Async Generator Functions

This feature allows you to define asynchronous generator functions using the async function* syntax. These functions can yield values using the yield keyword, and they return an AsyncIterator which can be used with for-await-of loops.

async function* asyncGenerator() {
  var i = 0;
  while (i < 3) {
    yield i++;
  }
}

For-Await-Of Loops

This feature enables you to iterate over AsyncIterables using a for-await-of loop. The loop will wait for each promise returned by the AsyncIterable to resolve before continuing to the next iteration.

async function iterateAsyncGenerator() {
  for await (const value of asyncGenerator()) {
    console.log(value);
  }
}

Other packages similar to @babel/plugin-proposal-async-generator-functions

Readme

Source

@babel/plugin-proposal-async-generator-functions

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
});

Try it Out in the REPL

Installation

npm install --save-dev @babel/plugin-proposal-async-generator-functions

Usage

.babelrc

{
  "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").transform("code", {
  plugins: ["@babel/plugin-proposal-async-generator-functions"]
});

References

Keywords

FAQs

Last updated on 01 Dec 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc