[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Generator [Back]  [Original]

Generator - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

Generator

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since setembro de 2016.

O objeto Generator retornado por generator function e conforme iterable protocol e o iterator protocol.

In this article

Sntaxe

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

var g = gen(); // "Generator { }"

Mtodos

Generator.prototype.next()

Retorna o valor fornecido pela expresso yield.

Generator.prototype.return()

Retorna o valor fornecido a finaliza o generator.

Generator.prototype.throw()

Lana um erro no generator.

Example

An infinite iterator

js
function* idMaker() {
  var index = 0;
  while (true) yield index++;
}

var gen = idMaker(); // "Generator { }"

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ...

Objeto legacy generator

Firefox (SpiderMonkey) tambm implementa a verso anterior do generator em JavaScript 1.7, onde o asterisco (*) na declarao da funo no era necessrio (somente era necessrio usar a palavra reservada yield no corpo da funo). Contudo, legacy generators esto obsoletos. No os use, eles sero removidos (Erro do Firefox 1083482).

Mtodos legacy generator

Generator.prototype.next()

Retorna o valor fornecido pela expresso yield. Isto corresponde ao next() do ES6.

Generator.prototype.close()

Fecha o generator, ento quando chamar next() um erro StopIteration ser lanado. Isto corresponde ao mtodo return() do ES6.

Generator.prototype.send()

Usado para enviar um valor para o generator. Este valor retordo pela expresso yield, e retorna o valor fornecido pelo pelo next yield. send(x) corresponde ao next(x) do ES6.

Generator.prototype.throw()

Lana um erro no generator. Isto corresponde ao mtodo throw() do ES6.

Exemplo do Legacy generator

js
function* fibonacci() {
  var a = yield 1;
  yield a * 2;
}

var it = fibonacci();
console.log(it); // "Generator {  }"
console.log(it.next()); // 1
console.log(it.send(10)); // 20
console.log(it.close()); // undefined
console.log(it.next()); // throws StopIteration (Como o generator est fechado)

Especificaes

Specification
ECMAScript 2027 LanguageSpecification
# sec-generator-objects

Compatibilidade com navegadores

Veja Tambm

Legacy generators

ES6 generators


Web Proxy Viewer  |  New URL  |  Original Page