Skip to content

Commit 632a99f

Browse files
committed
it includes portuguese article for text improvement
1 parent 5ea0f43 commit 632a99f

File tree

1 file changed

+10
-10
lines changed
  • 1-js/12-generators-iterators/2-async-iterators-generators

1 file changed

+10
-10
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ O caso mais comum é quando o objeto precisa fazer uma solicitação de rede par
6969

7070
Para tornar um objeto iterável de forma assíncrona:
7171

72-
1. Use `Symbol.asyncIterator` em vez de `Symbol.iterator`.
72+
1. Use o `Symbol.asyncIterator` em vez do `Symbol.iterator`.
7373
2. O método `next()` deve retornar uma promise (para ser resolvida com o próximo valor).
7474
- A palavra-chave `async` cuida disso, podemos simplesmente fazer `async next()`.
7575
3. Para iterar sobre esse objeto, devemos usar um loop `for await (let item of iterable)`.
@@ -124,8 +124,8 @@ Como podemos ver, a estrutura é semelhante aos iteradores tradicionais:
124124

125125
1. Para criar um objeto iterável de forma assíncrona, ele deve ter um método `Symbol.asyncIterator` `(1)`.
126126
2. Este método deve retornar o objeto com o método `next()` que retorna uma promise `(2)`
127-
3. O método `next()` não precisa ser `assíncrono (async)`, pode ser um método regular que retorna uma promise, mas `async` nos permite usar `await`, o que é conveniente. Aqui apenas atrasamos por um segundo `(3)`.
128-
4. Para iterar, usamos `for await(let value of range)` `(4)`, ou seja, adicionamos "await" após "for". Isso chama `range[Symbol.asyncIterator]()` uma vez e, em seguida, seu `next()` para obter valores.
127+
3. O método `next()` não precisa ser `assíncrono (async)`, pode ser um método comum que retorna uma promise, mas o `async` nos permite usar o `await`, o que é conveniente. Aqui apenas atrasamos por um segundo `(3)`.
128+
4. Para iterar, usamos `for await(let value of range)` `(4)`, ou seja, adicionamos o "await" após o "for". Isso chama `range[Symbol.asyncIterator]()` uma vez e, em seguida, seu `next()` para obter valores.
129129

130130
Aqui está uma pequena tabela com as diferenças:
131131
| | Iteradores | Iteradores assíncronos |
@@ -144,12 +144,12 @@ alert( [...range] ); // Error, no Symbol.iterator
144144

145145
Isso é natural, pois espera encontrar `Symbol.iterator`, não `Symbol.asyncIterator`.
146146

147-
Isso também é válido para `for..of`: a sintaxe sem `await` precisa de `Symbol.iterator`.
147+
Isso também é válido para `for..of`: a sintaxe sem o `await` precisa do `Symbol.iterator`.
148148
````
149149
150150
## Relembrando os geradores
151151
152-
Agora, vamos relembrar os geradores, pois eles permitem encurtar o código de iteração. Na maioria das vezes, quando queremos criar um iterável, usaremos geradores.
152+
Agora, vamos relembrar dos geradores, pois eles permitem encurtar o código de iteração. Na maioria das vezes, quando queremos criar um iterável, usaremos geradores.
153153
154154
Por pura simplicidade, omitindo algumas coisas importantes, eles são "funções que geram (yield) valores". Eles são explicados em detalhes no capítulo [](info:generators).
155155
@@ -214,7 +214,7 @@ Vamos mudar para geradores assíncronos para tornar isso possível.
214214
215215
Para a maioria das aplicações práticas, quando desejamos fazer um objeto que gera de forma assíncrona uma sequência de valores, podemos usar um gerador assíncrono.
216216
217-
A sintaxe é simples: prefixe `function*` com `async`. Isso torna o gerador assíncrono.
217+
A sintaxe é simples: prefixe `function*` com o `async`. Isso torna o gerador assíncrono.
218218
219219
E então use `for await (...)` para iterar sobre ele, assim:
220220
@@ -243,19 +243,19 @@ E então use `for await (...)` para iterar sobre ele, assim:
243243
})();
244244
```
245245
246-
Como o gerador é assíncrono, podemos usar `await` dentro dele, fazê-lo depender de promises, realizar requisições de rede e assim por diante.
246+
Como o gerador é assíncrono, podemos usar o `await` dentro dele, fazê-lo depender de promises, realizar requisições de rede e assim por diante.
247247
248248
````smart header="Diferença de baixo dos panos"
249249
Tecnicamente, se você é um leitor avançado que se lembra dos detalhes dos geradores, há uma diferença interna.
250250
251251
Para geradores assíncronos, o método `generator.next()` é assíncrono, ele retorna promises.
252252
253-
Em um gerador tradicional usaríamos `result = generator.next()` para obter valores. Em um gerador assíncrono, devemos adicionar `await`, assim:
253+
Em um gerador tradicional, usaríamos `result = generator.next()` para obter valores. Em um gerador assíncrono, devemos adicionar o `await`, assim:
254254
255255
```js
256256
result = await generator.next(); // result = {value: ..., done: true/false}
257257
```
258-
É por isso que geradores assíncronos funcionam com `for await...of`.
258+
É por isso que geradores assíncronos funcionam com `for await...of`.
259259
````
260260

261261
### Async iterable range
@@ -408,6 +408,6 @@ Diferenças de sintaxe entre geradores assíncronos e tradicionais:
408408
| Declaração | `function*` | `async function*` |
409409
| valor retornado por `next()` é | `{value:…, done: true/false}` | `Promise` que se resolve para `{value:…, done: true/false}` |
410410

411-
Na área de desenvolvimento web, frequentemente nos deparamos com fluxos de dados, nos quais os dados fluem pedaço por pedaço. Por exemplo, ao baixar ou enviar um arquivo grande.
411+
Na área de desenvolvimento web, frequentemente nos deparamos com fluxos de dados, nos quais os dados fluem pedaço por pedaço. Por exemplo, ao baixarmos ou enviarmos um arquivo grande.
412412

413413
Podemos usar geradores assíncronos para processar esses tipos de dados. Também é importante mencionar que em alguns ambientes, como em navegadores, existe outra API chamada Streams, que fornece interfaces especiais para trabalhar com esses fluxos, transformar dados e transmiti-los de um fluxo para outro (por exemplo, baixar de um local e enviar imediatamente para outro).

0 commit comments

Comments
 (0)