Repository navigation
Promise - #465
Promise#465
Conversation
| Assim como existe uma cláusula `finally` em um `try {...} catch {...}` comum, existe `finally` em promises também. | ||
|
|
||
| The call `.finally(f)` is similar to `.then(f, f)` in the sense that `f` runs always, when the promise is settled: be it resolve or reject. | ||
| A chamada `.finally(f)` é parecida com `.then(f, f)`, no sentido de que `f` sempre roda quando a promise é resolvida (settled): seja em `resolve` ou `reject`. |
There was a problem hiding this comment.
Aqui "settled" foi traduzido como "resolvida", mas o próprio artigo já usa "resolvida" para o caso de sucesso (resolve/fulfilled). Na linha 84 temos "Uma promise que foi resolvida ou rejeitada é chamada de settled", então quem lê pode entender que o finally só roda quando a promise dá certo.
Sugiro escolher uma palavra exclusiva para "settled", como "finalizada" ou "concluída", e usar a mesma em todo o artigo. O mesmo problema aparece em:
- linha 234 (comentário no código: "roda quando a promise é resolvida, não importa se com sucesso ou não", que acaba se contradizendo)
- linha 286 ("promises já resolvidas")
- linha 289
| Resumindo, o executor deve realizar um trabalho (geralmente algo que leva tempo) e então chamar `resolve` ou `reject` para mudar o estado da promise correspondente. | ||
|
|
||
| A promise that is either resolved or rejected is called "settled", as opposed to an initially "pending" promise. | ||
| Uma promise que foi resolvida ou rejeitada é chamada de "settled" (encerrada/resolvida), em contraste com uma promise inicialmente "pending" (pendente). |
There was a problem hiding this comment.
O glossário "settled (encerrada/resolvida)" dá duas opções, e "resolvida" já tem outro significado no artigo. Que tal deixar só um termo (ex.: "finalizada") para não confundir com o caso de sucesso?
| // assim o indicador de carregamento sempre é parado antes de continuarmos | ||
| */!* | ||
| .then(result => show result, err => show error) | ||
| .then(resultado => mostra o resultado, erro => mostra o erro) |
There was a problem hiding this comment.
Os nomes dos parâmetros foram traduzidos (resultado, erro), mas a convenção do projeto é não traduzir nomes de variáveis ou funções no código. Sugestão:
.then(result => mostra o resultado, err => mostra o erro)|  | ||
|
|
||
| That was an example of a successful job completion, a "fulfilled promise". | ||
| Esse foi um exemplo de uma conclusão de trabalho bem-sucedida, uma "promise cumprida" (fulfilled). |
There was a problem hiding this comment.
O estado de sucesso aparece com três nomes diferentes: "cumprida" (aqui), "resolvida" (em outras partes do artigo) e "fulfilled". Seria bom padronizar um único termo para facilitar a leitura.
| A chamada `.finally(f)` é parecida com `.then(f, f)`, no sentido de que `f` sempre roda quando a promise é resolvida (settled): seja em `resolve` ou `reject`. | ||
|
|
||
| The idea of `finally` is to set up a handler for performing cleanup/finalizing after the previous operations are complete. | ||
| A ideia do `finally` é configurar um handler para fazer a limpeza/finalização depois que as operações anteriores forem concluídas. |
There was a problem hiding this comment.
A palavra "handler" ficou em inglês ao longo do texto (mais de 15 ocorrências, entre as linhas 221 e 327). O capítulo seguinte (03-promise-chaining) já usa "tratador"/"tratadores". Que tal seguir o mesmo termo para manter a consistência entre os capítulos?
| 3. A *promise* is a special JavaScript object that links the "producing code" and the "consuming code" together. In terms of our analogy: this is the "subscription list". The "producing code" takes whatever time it needs to produce the promised result, and the "promise" makes that result available to all of the subscribed code when it's ready. | ||
| 1. Um "código produtor" que faz alguma coisa e leva um tempo pra isso. Por exemplo, algum código que carrega dados pela rede. Esse é o "cantor". | ||
| 2. Um "código consumidor" que quer o resultado do "código produtor" assim que ele estiver pronto. Várias funções podem precisar desse resultado. Esses são os "fãs". | ||
| 3. Uma *promise* é um objeto especial do JavaScript que liga o "código produtor" e o "código consumidor". Em termos da nossa analogia: essa é a "lista de inscrição". O "código produtor" leva o tempo que precisar para produzir o resultado prometido, e a "promise" disponibiliza esse resultado para todo o código inscrito assim que ele estiver pronto. |
There was a problem hiding this comment.
Pergunta sobre o termo: aqui o texto mantém "promise" em inglês, mas o capítulo 03-promise-chaining usa "promessa". Vale alinhar os dois capítulos, seja qual for a escolha, para o leitor não achar que são coisas diferentes.
| |----------|-----------| | ||
| | Promises allow us to do things in the natural order. First, we run `loadScript(script)`, and `.then` we write what to do with the result. | We must have a `callback` function at our disposal when calling `loadScript(script, callback)`. In other words, we must know what to do with the result *before* `loadScript` is called. | | ||
| | We can call `.then` on a Promise as many times as we want. Each time, we're adding a new "fan", a new subscribing function, to the "subscription list". More about this in the next chapter: [](info:promise-chaining). | There can be only one callback. | | ||
| | Promises nos permitem fazer as coisas na ordem natural. Primeiro, rodamos `loadScript(script)`, e `.then` escrevemos o que fazer com o resultado. | Precisamos ter uma função `callback` disponível ao chamar `loadScript(script, callback)`. Em outras palavras, precisamos saber o que fazer com o resultado *antes* de `loadScript` ser chamado. | |
There was a problem hiding this comment.
Em inglês funciona o trocadilho com "then", mas "e .then escrevemos o que fazer" não fica natural em português. Sugestão:
"Rodamos loadScript(script), e depois (.then) escrevemos o que fazer com o resultado."
| // seu código | ||
| } | ||
|
|
||
| delay(3000).then(() => alert('runs after 3 seconds')); |
There was a problem hiding this comment.
O comentário // seu código foi traduzido, mas a string ficou em inglês. Strings podem ser traduzidas. Sugestão:
delay(3000).then(() => alert('roda depois de 3 segundos'));|
Obrigado pela revisão, @gabifs! Apliquei tudo:
|
Tradução do artigo "Promise" para o português, incluindo os três exercícios.
Conforme comentado na #1.