Skip to content

Conversation

ggarber42
Copy link

@ggarber42 ggarber42 commented Feb 6, 2021

Copy link
Contributor

@joaostein joaostein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ggarber42 - Obrigado pelo envio.

Deixei o primeiro review com alguns ajustes finos.

Reparei que você criou um novo arquivo diferente do original (11_async.md). Além disso, adicionou e editou outros elementos do repositório. Apenas para sua referência, vamos manter a estrutura de arquivos do livro original para esta versão.

Por isso, gostaria de solicitar que, além da tradução do conteúdo em texto, mantenha a estrutura original dos arquivos sem as alterações/adaptações que você adicionou.

Assim que as mudanças forem aplicadas, farei um segundo review.

Enquanto isso, se precisar de qualquer coisa, é só me avisar.

>
> — Laozi, Tao Te Ching

A parte central de um computador, a parte que dá os passos individuais que compõe os nossos programas é chamada de **processador**. Os programas que vimos até agora são do tipo que mantém o processador ocupado até que eles tenham terminado seu trabalho. A velocidade na qual um _loop_ que manipula números é executado depende inteiramente do processador.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

manipula números -> manipula números

>
> — Laozi, Tao Te Ching

A parte central de um computador, a parte que dá os passos individuais que compõe os nossos programas é chamada de **processador**. Os programas que vimos até agora são do tipo que mantém o processador ocupado até que eles tenham terminado seu trabalho. A velocidade na qual um _loop_ que manipula números é executado depende inteiramente do processador.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mantém -> mantêm


## Assincronicidade

Em um programa **síncrono**, as coisas acontecem uma de cada vez. Quando uma função com certo tempo de execução é chamada , o programa retorna apenas quando a ação tiver terminado e podemos retornar o resultado. Isso para o programa pelo tempo que a ação durar.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

é chamada , o -> é chamada, o


Nós podemos comparar programação síncrona e assíncrona usando o seguinte exemplo: um programa busca dois recursos da rede e depois combina os resultados.

Em um ambiente síncrono, uma função de _request_ retorna somente depois de fazer seu trabalho, assim a maneira mais fácil de realizar esse tipo de tarefa é ter uma _request_ após a outra. E a desvantagem de fazer dessa forma é que a segunda _request_ irá começar apenas depois da primeira concluir. Portanto, o tempo total de execução será no mínimo a soma do tempo de resposta das duas _requests_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E a desvantagem -> A desvantagem


Em um ambiente síncrono, uma função de _request_ retorna somente depois de fazer seu trabalho, assim a maneira mais fácil de realizar esse tipo de tarefa é ter uma _request_ após a outra. E a desvantagem de fazer dessa forma é que a segunda _request_ irá começar apenas depois da primeira concluir. Portanto, o tempo total de execução será no mínimo a soma do tempo de resposta das duas _requests_.

A solução para esse problema, em um ambiente síncrono, é adicionar _threads_ de controle. Um _thread_ é um outro programa rodando cuja execução pode ser intercalada com outros programas pelo sistema operacional, já que a maioria dos computadores possuem múltiplos processadores, múltiplos _threads_ podem ser executados ao mesmo tempo em processadores diferentes. Um segundo _threads_ pode começar a segunda _request_ e então ambos os _threads_ esperam por seus resultados, após eles irão se ressincronizar e combinar seus resultados.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adicionar _threads_ -> adicionar _threads_


Isso pode ser feito em um _loop_ único que busca pelos ninhos, movendo adiante para o próximo quando ele encontra o valor que não equivale ao nome do ninho atual e retorna o nome quando encontra o valor. Numa função `async`, um `for` ou `while` _loop_ pode ser utilizado.

Para fazer o mesmo numa função normal, você vai ter que construir o _loop_ utilizando uma funçãor recursiva. A maneira mais fácil de fazer isso é ter a função retornando uma _promise_ chamando `then` na _promise_ que mantém o valor armazendo. Dependendo se o valor equivale ao nome do próximo ninho, o tratador retorna o valor ou uma próxima _promise_ chamando o _loop_ novamente.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

funçãor -> função


Isso pode ser feito em um _loop_ único que busca pelos ninhos, movendo adiante para o próximo quando ele encontra o valor que não equivale ao nome do ninho atual e retorna o nome quando encontra o valor. Numa função `async`, um `for` ou `while` _loop_ pode ser utilizado.

Para fazer o mesmo numa função normal, você vai ter que construir o _loop_ utilizando uma funçãor recursiva. A maneira mais fácil de fazer isso é ter a função retornando uma _promise_ chamando `then` na _promise_ que mantém o valor armazendo. Dependendo se o valor equivale ao nome do próximo ninho, o tratador retorna o valor ou uma próxima _promise_ chamando o _loop_ novamente.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

armazendo -> armazenado


Não se esqueça de começar o _loop_ chamando uma função recursiva uma vez na função principal.

Na função `async`, _promises_ rejeitadas são covertidas por exeções pelo `await`. Quando a função `async` joga uma exeção, a _promise_ é rejeitada. Assim funciona.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

covertidas -> convertidas


Não se esqueça de começar o _loop_ chamando uma função recursiva uma vez na função principal.

Na função `async`, _promises_ rejeitadas são covertidas por exeções pelo `await`. Quando a função `async` joga uma exeção, a _promise_ é rejeitada. Assim funciona.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exeções -> exceções
exeção -> exceção


Implementando algo como isso você mesmo, como uma função comum chamada `Promise_all`.

Lembrando que depois da _promise_ ter sucesso ou falhar, ela não pode ter sucesso ou fracassar novamente, em próximas chamadas para funções que as resolvem são ignoradas. Isso pode simplificar a forma como você trata a falha da sua _promise_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

da sua _promise_ -> da sua _promise_

@ggarber42
Copy link
Author

Beleza, no fds eu vou dar um revisada sim.

@ggarber42
Copy link
Author

Bom dia @joaostein tudo certo?

Então eu alterei o nome dos outros arquivos porque não encontrei o arquivo 11_async.md

Screenshot from 2021-02-27 08-50-10

Aí eu tentei renomear os arquivos, para ter a ordem certa (pois já existe um capítulo 11 atualmente).

Mas, no caso o que eu preciso fazer é criar esse arquivo 11_async.md para a tradução? Que depois vocês arrumam o resto da estrutura?

Só fiquei com essa dúvida, valeu!!!

@joaostein
Copy link
Contributor

@ggarber42 você está utilizando os arquivos do branch master (segunda versão do livro). Para acessar os arquivos da terceira versão, que é a que estamos trabalhando, você deverá usar o branch 3rd.

https://github.com/braziljs/eloquente-javascript/tree/3rd

@ggarber42 ggarber42 closed this Apr 25, 2021
@ggarber42
Copy link
Author

@joaostein vou abrir outra PR com a branch correta. Mas eu fiz as modificações da tua revisão.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants