-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Tradução capítulo 11 #462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tradução capítulo 11 #462
Conversation
There was a problem hiding this 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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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_. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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_. |
There was a problem hiding this comment.
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_
Beleza, no fds eu vou dar um revisada sim. |
Bom dia @joaostein tudo certo? Então eu alterei o nome dos outros arquivos porque não encontrei o arquivo 11_async.md 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!!! |
@ggarber42 você está utilizando os arquivos do branch https://github.com/braziljs/eloquente-javascript/tree/3rd |
@joaostein vou abrir outra PR com a branch correta. Mas eu fiz as modificações da tua revisão. |
#410