From 3f3c834f4bebd2680874d318925f9068fad47f1a Mon Sep 17 00:00:00 2001 From: Bruno Peselli <42525651+pzzzl@users.noreply.github.com> Date: Sun, 4 Jul 2021 18:52:14 -0300 Subject: [PT-BR] Full page revision (#1341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [en] Full page review. Grammatical corrections and removing duplicates in english. [pt-br] Revisão completa da página. Correções gramaticais e remoção de textos duplicados em inglês. --- .../web/javascript/guide/using_promises/index.html | 52 ++++++++++------------ 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/files/pt-br/web/javascript/guide/using_promises/index.html b/files/pt-br/web/javascript/guide/using_promises/index.html index 900a15351a..fd89ea5a78 100644 --- a/files/pt-br/web/javascript/guide/using_promises/index.html +++ b/files/pt-br/web/javascript/guide/using_promises/index.html @@ -12,7 +12,7 @@ original_slug: Web/JavaScript/Guide/Usando_promises ---
Uma {{jsxref("Promise")}} é um objeto que representa a eventual conclusão ou falha de uma operação assincrona. Como a maioria das pessoas consomem promisses já criadas, este guia explicará o consumo de promisses devolvidas antes de explicar como criá-las.
+Uma {{jsxref("Promise")}} é um objeto que representa a eventual conclusão ou falha de uma operação assíncrona. Como a maioria das pessoas consomem promises já criadas, este guia explicará o consumo de promises devolvidas antes de explicar como criá-las.
Essencialmente, uma promise é um objeto retornado para o qual você adiciona callbacks, em vez de passar callbacks para uma função.
@@ -28,7 +28,7 @@ original_slug: Web/JavaScript/Guide/Usando_promises doSomething(successCallback, failureCallback); -…funções modernas retornam uma promisse e então você pode adicionar seus callbacks:
+…funções modernas retornam uma promise e então você pode adicionar seus callbacks:
const promise = doSomething();
promise.then(successCallback, failureCallback);
@@ -37,27 +37,27 @@ promise.then
doSomething().then(successCallback, failureCallback);
-Nós chamamos isso de chamada de função assincrona. Essa convenção tem várias vantagens. Vamos explorar cada uma delas.
+Nós chamamos isso de chamada de função assíncrona. Essa convenção tem várias vantagens. Vamos explorar cada uma delas.
Ao contrário dos callbacks com retornos de funções old-style, uma promisse vem com algumas garantias:
+Ao contrário dos callbacks com retornos de funções old-style, uma promise vem com algumas garantias:
Mas o benefício mais imediato da promises é o encadeamento.
+Mas o benefício mais imediato das promises é o encadeamento.
Uma necessidade comum é executar duas ou mais operações assincronas consecutivas, onde cada operação subsequente começa quando a operação anterior é bem sucedida, com o resultado do passo anterior. Nós conseguimos isso criando uma cadeia de promises.
+Uma necessidade comum é executar duas ou mais operações assíncronas consecutivas, onde cada operação subsequente começa quando a operação anterior é bem sucedida, com o resultado do passo anterior. Nós conseguimos isso criando uma cadeia de promises.
-Aqui está a magica: a função then
retorna uma nova promise, diferente da original:
Aqui está a mágica: a função then
retorna uma nova promise, diferente da original:
const promise = doSomething(); const promise2 = promise.then(successCallback, failureCallback); @@ -68,11 +68,11 @@ const promise2 = promise.then(successCallback, failureCallback);const promise2 = doSomething().then(successCallback, failureCallback);-Essa segunda promise representa a conclusão não apenas de
+doSomething()
, mas também dosuccessCallback
oufailureCallback
que você passou, que podem ser outras funções assincronas que retornam uma promise. Quando esse for o caso, quaisquer callbacks adicionados apromise2
serão enfileiradas atrás da promise retornada porsuccessCallback
oufailureCallback
.Essa segunda promise representa a conclusão não apenas de
doSomething()
, mas também dosuccessCallback
oufailureCallback
que você passou, que podem ser outras funções assíncronas que retornam uma promise. Quando esse for o caso, quaisquer callbacks adicionados apromise2
serão enfileiradas atrás da promise retornada porsuccessCallback
oufailureCallback
.Basicamente, cada promise representa a completude de outro passo assíncrono na cadeia.
-Antigamente, realizar operações assíncronas comuns em uma linha levaria à clássica pirâmide da desgraça :
+Antigamente, realizar operações assíncronas comuns em uma linha levaria à clássica pirâmide da desgraça:
doSomething(function(result) { doSomethingElse(result, function(newResult) { @@ -112,7 +112,7 @@ const promise2 = promise.then(successCallback, failureCallback);Encadeando depois de um catch
-É possivel encadear depois de uma falha, i.e um
+catch
, isso é muito útil para realizar novas ações mesmo depois de uma falha no encadeamento. Leia o seguinte exemplo:É possivel encadear depois de uma falha, i.e um
catch
. Isso é muito útil para realizar novas ações mesmo depois de uma falha no encadeamento. Leia o seguinte exemplo:new Promise((resolve, reject) => { console.log('Initial'); @@ -143,7 +143,7 @@ Do this whatever happened beforePropagação de erros
-Na pirâmide da desgraça vista anteriormente, você pode se lembrar de ter visto
+failureCallback
três vezes, em comparação a uma única vez no fim da corrente de promessas:Na pirâmide da desgraça vista anteriormente, você pode se lembrar de ter visto
failureCallback
três vezes, em comparação a uma única vez no fim da corrente de promises:doSomething() .then(result => doSomethingElse(result)) @@ -152,7 +152,7 @@ Do this whatever happened before .catch(failureCallback);-Basicamente, uma corrente de promessas para se houver uma exceção, procurando por catch handlers no lugar. Essa modelagem de código segue bastante a maneira de como o código síncrono funciona:
+Basicamente, uma corrente de promises para se houver uma exceção, procurando por catch handlers no lugar. Essa modelagem de código segue bastante a maneira de como o código síncrono funciona:
try { const result = syncDoSomething(); @@ -178,7 +178,7 @@ Do this whatever happened before }-É construído sobre promesas, por exemplo,
+doSomething()
é a mesma função que antes. Leia mais sobre a sintaxe aqui.É construído sobre promises, por exemplo,
doSomething()
é a mesma função que antes. Leia mais sobre a sintaxe aqui.Por pegar todos os erros, até mesmo exceções jogadas(thrown exceptions) e erros de programação, as promises acabam por solucionar uma falha fundamental presente na pirâmide da desgraça dos callbacks. Essa característica é essencial para a composição funcional das operações assíncronas.
@@ -186,27 +186,25 @@ Do this whatever happened beforeUma {{jsxref("Promise")}} pode ser criada do zero utilizando o seu construtor. Isto deve ser necessário apenas para o envolvimento de APIs antigas.
-Em um mundo ideal, todas as funções assincronas já retornariam promises. Infelizmente, algumas APIs ainda esperam que os retornos de suceso e/ou falha sejam passados da maneira antiga. O exemplo por excelência é o {{domxref("WindowTimers.setTimeout", "setTimeout()")}} function:
+Em um mundo ideal, todas as funções assíncronas já retornariam promises. Infelizmente, algumas APIs ainda esperam que os retornos de sucesso e/ou falha sejam passados da maneira antiga. O exemplo por excelência é o {{domxref("WindowTimers.setTimeout", "setTimeout()")}} function:
setTimeout(() => saySomething("10 seconds passed"), 10000);-Misturar chamadas de retorno e promeses de old-style é problemático. Se
+saySomething
falhar ou contiver um erro de programação, nada o captura.Misturar chamadas de retorno e promises de old-style é problemático. Se
-saySomething
falhar ou contiver um erro de programação, nada o captura.Por sorte nós podemos envolve-la em uma promise. É uma boa prática envolver funções problemáticas no menor nivel possível, e nunca chama-las diretamente de novo:
+Por sorte nós podemos envolvê-la em uma promise. É uma boa prática envolver funções problemáticas no menor nivel possível, e nunca chamá-las diretamente de novo:
const wait = ms => new Promise(resolve => setTimeout(resolve, ms)); wait(10000).then(() => saySomething("10 seconds")).catch(failureCallback);-Basically, the promise constructor takes an executor function that lets us resolve or reject a promise manually. Since
- -setTimeout
doesn't really fail, we left out reject in this case.Basicamente, um construtor de promises pega uma função executora que nos deixa resolver ou rejeitar uma promise manualmente. Desde que
+setTimeout
não venha a falhar, nos deixamos a rejeição de fora nesse casoBasicamente, um construtor de promises pega uma função executora que nos deixa resolver ou rejeitar uma promise manualmente. Desde que
setTimeout
não falhe, nós deixamos a rejeição de fora neste caso.Composição
-{{jsxref("Promise.resolve()")}} e {{jsxref("Promise.reject()")}} são atalhos para se criar manualmente uma promessa que já foi resolvida ou rejeitada, respectivamente. Isso pode ser útil em algumas situações.
+{{jsxref("Promise.resolve()")}} e {{jsxref("Promise.reject()")}} são atalhos para se criar manualmente uma promise que já foi resolvida ou rejeitada, respectivamente. Isso pode ser útil em algumas situações.
{{jsxref("Promise.all()")}} e {{jsxref("Promise.race()")}} são duas ferramentas de composição para se executar operações assíncronas em paralelo.
@@ -215,7 +213,7 @@ wait(10000).then(() => saySomething("10 seconds")).catch(failureCallback);[func1, func2].reduce((p, f) => p.then(f), Promise.resolve());-Basicamente reduzimos um vetor de funções assíncronas a uma cadeia de promessas equivalentes a:
+Promise.resolve().then(func1).then(func2);
Basicamente reduzimos um vetor de funções assíncronas a uma cadeia de promises equivalentes a:
Promise.resolve().then(func1).then(func2);
Isso também pode ser feito com uma função de composição reutilizável, que é comum em programação funcional:
@@ -224,13 +222,13 @@ const composeAsync = (...funcs) => x => funcs.reduce(applyAsync, Promise.r -A função composeAsync aceitará qualquer número de funções como argumentos e retornará uma nova função que aceita um valor incial a ser passado pelo pipeline de composição. Isso é benéfico porque alguma, ou todas as funções, podem ser assíncronas ou síncronas, e é garantido de que serão executadas na ordem correta.
+A função composeAsync aceitará qualquer número de funções como argumentos e retornará uma nova função que aceita um valor inicial a ser passado pelo pipeline de composição. Isso é benéfico porque alguma, ou todas as funções, podem ser assíncronas ou síncronas, e é garantido de que serão executadas na ordem correta.
const transformData = composeAsync(func1, asyncFunc1, asyncFunc2, func2); transformData(data);-No ECMAScript 2017, uma composição sequencial pode ser feita sde forma mais simples com async/await:
+No ECMAScript 2017, uma composição sequencial pode ser feita de forma mais simples com async/await:
for (const f of [func1, func2]) { await f(); @@ -239,15 +237,13 @@ transformData(data);Cronometragem
-Para evitar surpresas, funções passadas para
+then
nunca serão chamadas sincronamente, mesmo com uma função ja resolvida:Para evitar surpresas, funções passadas para
then
nunca serão chamadas sincronamente, mesmo com uma função já resolvida:Promise.resolve().then(() => console.log(2)); console.log(1); // 1, 2-Instead of running immediately, the passed-in function is put on a microtask queue, which means it runs later when the queue is emptied at the end of the current run of the JavaScript event loop, i.e. pretty soon:
- -Ao invés de rodar imediatamente, a função passada é colocada em uma micro tarefa, o que significa que ela roda depois que a fila estiver vazia no final do atual processo de evento de loop do Javascript, isto é muito em breve
+Ao invés de rodar imediatamente, a função passada é colocada em uma micro tarefa, o que significa que ela roda depois que a fila estiver vazia no final do atual processo de evento de loop do Javascript, ou seja: muito em breve:
const wait = ms => new Promise(resolve => setTimeout(resolve, ms)); -- cgit v1.2.3-54-g00ecf