Spec-Zone.ru › Babel 7

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

ПРИМЕЧАНИЕ: Этот плагин включён в @babel/preset-env, в ES2018

Пример​

Вход

async function* agf() {
  await 1;
  yield 2;
}

Выход

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`

async function f() {
  for await (let x of y) {
    g(x);
  }
}

Пример использования

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

Попробуйте в REPL

Установка​

  • npm
  • Yarn
  • pnpm
npm install --save-dev @babel/plugin-proposal-async-generator-functions
yarn add --dev @babel/plugin-proposal-async-generator-functions
pnpm add --save-dev @babel/plugin-proposal-async-generator-functions

Использование​

С файлом конфигурации (Рекомендуется)​

{
  "plugins": ["@babel/plugin-proposal-async-generator-functions"]
}

Через CLI​

babel --plugins @babel/plugin-proposal-async-generator-functions script.js

Через Node API​

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

Ссылки​

  • Предложение: Асинхронная итерация для ECMAScript

© 2014-present Sebastian McKenzie
Licensed under the MIT License.
https://babeljs.io/docs/babel-plugin-proposal-async-generator-functions/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API