Skip to content

Commit 739b733

Browse files
committed
refactor: adds grammatical and concordance corrections
1 parent 1d308ce commit 739b733

File tree

1 file changed

+14
-14
lines changed
  • 1-js/12-generators-iterators/1-generators

1 file changed

+14
-14
lines changed

1-js/12-generators-iterators/1-generators/article.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Geradores
22

3-
Funções regulares retorna apenas um único valor (ou nenhum).
3+
Funções regulares retornam apenas um único valor (ou nenhum).
44

55
Geradores podem retornar ("yield") múltiplos valores, um após o outro, sob demanda. Eles funcionam muito bem com [iteráveis](info:iterable), permitindo criar fluxos de dados com facilidade.
66

@@ -88,7 +88,7 @@ alert(JSON.stringify(three)); // {value: 3, *!*done: true*/!*}
8888

8989
![](generateSequence-4.svg)
9090

91-
Agora o generator está concluído. Vemos isso em `done:true` e `value:3` como o resultado final.
91+
Agora o `generator` está concluído. Vemos isso em `done:true` e `value:3` como resultado final.
9292

9393
Novas chamadas à `generator.next()` não fazem mais sentido. Se as fizermos, elas retornam o mesmo objeto: `{done: true}`.
9494

@@ -154,11 +154,11 @@ let sequence = [0, ...generateSequence()];
154154
alert(sequence); // 0, 1, 2, 3
155155
```
156156

157-
No código acima, `...generateSequence()` transforma o objeto gerador iterável em um array de itens (leia mais sobre a sintaxe de propagação no capítulo [](info:rest-parameters-spread#spread-syntax))
157+
No código acima, `...generateSequence()` transforma o objeto gerador iterável em um array de itens (leia mais sobre a sintaxe de propagação no capítulo <info:rest-parameters-spread#spread-syntax>)
158158

159159
## Utilizando geradores para iteráveis
160160

161-
Há algum tempo, no capítulo [](info:iterable), criamos um objeto iterável `range` que retorna valores `from..to`.
161+
Há algum tempo, no capítulo <info:iterable>, criamos um objeto iterável `range` que retorna valores `from..to`.
162162

163163
Aqui, vamos relembrar o código:
164164

@@ -194,7 +194,7 @@ alert([...range]); // 1,2,3,4,5
194194

195195
Podemos usar uma função geradora para iteração, fornecendo-a como `Symbol.iterator`.
196196

197-
Aqui está o mesmo objeto `range`, porém muito mais compacto:
197+
Aqui está o mesmo objeto `range`, porém muito mais compacto:
198198

199199
```js run
200200
let range = {
@@ -211,7 +211,7 @@ let range = {
211211
alert( [...range] ); // 1,2,3,4,5
212212
```
213213

214-
Iso funciona porque `range[Symbol.iterator]()` agora retorna um gerador, e os métodos do gerador são exatamente o que `for..of` espera:
214+
Isso funciona porque `range[Symbol.iterator]()` agora retorna um gerador, e os métodos do gerador são exatamente o que `for..of` espera:
215215
- ele tem um método `.next()`
216216
- que retorna valores no formato `{value: ..., done: true/false}`
217217

@@ -278,7 +278,7 @@ alert(str); // 0..9A..Za..z
278278

279279
A diretiva `yield*` *delega* a execução para outro gerador. Isso significa que `yield* gen` itera sobre o gerador `gen` e encaminha transparentemente seus valores para fora. Como se os valores fossem gerados pelo gerador externo.
280280

281-
O resultado é o mesmo que se estivéssemos incorporado o código dos geradores aninhados:
281+
O resultado é o mesmo que se incorporássemos o código dos geradores aninhados:
282282

283283
```js run
284284
function* generateSequence(start, end) {
@@ -341,7 +341,7 @@ generator.next(4); // --> passa o valor para dentro do gerador
341341
![](genYield2.svg)
342342

343343
1. A primeira chamada `generator.next()` sempre deve ser feito sem um argumento (o argumento é ignorado se passado). Isso inicia a execução e retorna o resultado do primeiro `yield "2+2=?"`. Nesse ponto, o gerador pausa a execução, enquanto espera na linha `(*)`.
344-
2. Então, como mostrado na imagem acima, o resultado do `yield` é vai para a variável `question` no código que chama.
344+
2. Então, como mostrado na imagem acima, o resultado do `yield` vai para a variável `question` no código que o chamou.
345345
3. Em `generator.next(4)`, o gerador é retomado, e `4` entra como o resultado: `let result = 4`.
346346

347347
Observe que o código externo não precisa chamar `next(4)` imediatamente. Pode levar algum tempo. Isso não é um problema: o gerador esperará.
@@ -353,7 +353,7 @@ Por exemplo:
353353
setTimeout(() => generator.next(4), 1000);
354354
```
355355

356-
Como podemos ver, ao contrário de funções regulares, um gerador e o código que o chama pode trocar resultados passando valores em `next/yield`
356+
Como podemos ver, ao contrário de funções regulares, um gerador e o código que o chamou pode trocar resultados passando valores em `next/yield`
357357

358358
Para tornar as coisas mais claras, aqui está outro exemplo com mais chamadas:
359359

@@ -385,9 +385,9 @@ A imagem da execução:
385385
2. O resultado é retornado para o código externo.
386386
3. O segundo `.next(4)` passa `4` de volta para o gerador como resultado do primeiro `yield` e retoma a execução.
387387
4. ...Alcança o segundo `yield`, que se torna o resultado da chamada do gerador.
388-
5. O terceiro `next(9)` passa `9` para o gerador como resultado do segundo `yield` e retoma e execução que alcança o final da função, então `done: true`.
388+
5. O terceiro `next(9)` passa `9` para o gerador como resultado do segundo `yield` e retoma a execução que alcança o final da função, então `done: true`.
389389

390-
É como um jogo de "pingue-pongue". Cada `next(value)` (com exceção do primeiro) passa um valor para o gerador, que se torna o resultado do `yield` atual, e então recebe de volta o valor do próximo `yield`.
390+
É como um jogo de "pingue-pongue". Cada `next(value)` (com exceção do primeiro) passa um valor para o gerador, que se torna o resultado do `yield` atual, e então recebe de volta o valor do próximo `yield`.
391391

392392
## generator.throw
393393

@@ -419,9 +419,9 @@ generator.throw(new Error("A resposta não foi encontrada no meu banco de dados"
419419
*/!*
420420
```
421421

422-
O erro, lançado no ,gerador na linha `(2)` leva a uma exceção na linha `(1)` com `yield`. No exemplo acima, `try..catch` o captura e o mostra.
422+
O erro, lançado no gerador na linha `(2)` leva a uma exceção na linha `(1)` com `yield`. No exemplo acima, `try..catch` captura e o exibe.
423423

424-
Se não o capturamos, então assim como qualquer exceção, ela "cai para fora" do gerador para o código que o chama.
424+
Se não o capturamos, então assim como qualquer exceção, ela "cai para fora" do gerador para o código que o chamou.
425425

426426
A linha atual do código que chama é a linha com `generator.throw`, rotulada como `(2)`. Portanto, devemos capturá-lo aqui, assim:
427427

@@ -465,7 +465,7 @@ g.next(); // { value: undefined, done: true }
465465

466466
Se usarmos novamente `generator.return()` em um gerador finalizado, ele retornará esse valor novamente ([MDN](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Generator/return)).
467467

468-
Frequentemente, não o usamos, pois na maioria das vezes queremos obter todos os valores retornados, mas pode ser útil quando queremos interromper um gerador em uma condição específica.
468+
Frequentemente, não o usamos, pois, na maioria das vezes queremos obter todos os valores retornados, mas pode ser útil quando queremos interromper um gerador em uma condição específica.
469469

470470
## Resumo
471471

0 commit comments

Comments
 (0)