From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/operators/yield/index.html | 181 +++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/operators/yield/index.html (limited to 'files/pt-br/web/javascript/reference/operators/yield') diff --git a/files/pt-br/web/javascript/reference/operators/yield/index.html b/files/pt-br/web/javascript/reference/operators/yield/index.html new file mode 100644 index 0000000000..f3fcb80345 --- /dev/null +++ b/files/pt-br/web/javascript/reference/operators/yield/index.html @@ -0,0 +1,181 @@ +--- +title: yield +slug: Web/JavaScript/Reference/Operators/yield +tags: + - ECMAScript 2015 + - Generators + - Iterator + - JavaScript + - Operador + - Operator +translation_of: Web/JavaScript/Reference/Operators/yield +--- +
{{jsSidebar("Operators")}}
+ +

A palavra-chave yield é usada para pausar e resumir uma generator function ({{jsxref("Statements/function*", "function*")}} or generator function legada).

+ +

Sintaxe

+ +
[rv] = yield [expressão];
+ +
+
expressão
+
Define o valor que retorna de uma generator function via o protocolo iterator. Se omitido, será retornado undefined.
+
rv
+
+

Retorna o valor opcional passado para o metódo next() do generator e resume sua execução.

+
+
+ +

Descrição

+ +

A palavra-chave yield pausa a execução de uma generator function e o valor da expressão em frente a palavra-chave yield é retornado para a chamada do generator. Ele pode ser considerado uma versão da palavra-chave return para o generator.

+ +

A palavra-chave yield atualmente retorna um objeto do tipo IteratorResult com duas propriedades, value e done. A propriedade value é o resultado da avaliação da expressão yield, e done é false, indicando que a generator function não foi totalmente completada.

+ +

Uma vez pausado em uma expressão yield, a execução do código do generator permanece pausado até a próxima chamada do métod next(). Cada vez que o método next() do generator é chamado, o generator resume a execução e roda até atingir um dos seguintes estados:

+ + + +

Se um valor opcional é passado para o método next() do generator, esse valor se torna o valor retornado pela operação yield atual do generator.

+ +

Entre o caminho de código do generator, os seus operadores yield, e a habilidade de especificar um novo valor inicial passando isso para o {{jsxref("Generator.prototype.next()")}}, generators oferecem um poder e controle enormes

+ +

Exemplos

+ +

O código seguinte é a declaração de um exemplo de uma generator function.

+ +
function* foo() {
+  var index = 0;
+  while (index <= 2)
+    yield index++;
+}
+ +

Uma vez que a generator function é definida, isso pode ser usada para construir um iterator como mostrado a seguir: 

+ +
var iterator = foo();
+console.log(iterator.next()); // { value: 0, done: false }
+console.log(iterator.next()); // { value: 1, done: false }
+console.log(iterator.next()); // { value: 2, done: false }
+console.log(iterator.next()); // { value: undefined, done: true }
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES2015', '#', 'Yield')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#', 'Yield')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support39{{CompatVersionUnknown}}{{CompatGeckoDesktop("26.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("10")}}
IteratorResult object instead of throwing{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop("29.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("10")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("26.0")}}{{CompatUnknown}}{{ CompatUnknown}}{{CompatSafari("10")}}
IteratorResult object instead of throwing{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("29.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("10")}}
+
+ +

Notas específicas do Firefox

+ + + +

Veja também

+ + -- cgit v1.2.3-54-g00ecf