Neste artigo você vai aprender a como usar promessas em JavaScript para lidar com operações assíncronas
Fala programador(a), beleza? Bora aprender sobre as promises em JavaScript!
As promessas são uma forma de lidar com operações assíncronas em JavaScript, permitindo que você escreva código de forma mais organizada e legível.
Elas são especialmente úteis quando você precisa encadear várias operações assíncronas ou lidar com erros de forma mais eficiente.
Aqui estão algumas dicas para usar promessas em JavaScript:
Crie uma promessa
Para criar uma promessa, você deve usar a função Promise
e passar uma função que recebe dois parâmetros: resolve
e reject
.
A função resolve
deve ser chamada quando a operação for bem-sucedida e a função reject
deve ser chamada quando houver um erro.
Por exemplo, aqui está como criar uma promessa que verifica se um número é par ou ímpar:
const checkNumber = new Promise((resolve, reject) => { if (number % 2 === 0) { resolve(`${number} é par`); } else { reject(`${number} é ímpar`); } });
Use o método then
para lidar com o resultado da promessa
Depois de criar uma promessa, você pode usar o método then
para especificar o que deve acontecer quando a promessa for resolvida ou rejeitada.
O método then
recebe dois parâmetros: uma função para lidar com o resultado da promessa (chamada de resolve
) e uma função para lidar com o erro (chamada de reject
).
Por exemplo, aqui está como usar o método then
com a promessa criada anteriormente:
checkNumber .then(result => console.log(result)) .catch(error => console.log(error));
Encadeie várias promessas com o método then
Você também pode encadear várias promessas usando o método then
. Isso é útil quando você precisa executar várias operações assíncronas de forma sequencial.
Por exemplo, aqui está como encadear duas promessas para ler dois arquivos de forma sequencial:
readFile("file1.txt") .then(result => console.log(result)) .then(() => readFile("file2.txt")) .then(result => console.log(result)) .catch(error => console.log(error));
Lide com erros com o método catch
O método catch
permite que você lide com erros em uma promessa de forma mais simples do que usando o segundo parâmetro do método then
.
Ele é especialmente útil quando você está encadeando várias promessas e precisa lidar com erros em todas elas de forma consistente.
Por exemplo, aqui está como usar o método catch
com a promessa criada anteriormente:
checkNumber .then(result => console.log(result)) .catch(error => console.log(error));
Crie uma promessa resolvida ou rejeitada com os métodos resolve
e reject
Você também pode criar uma promessa já resolvida ou rejeitada usando os métodos Promise.resolve
e Promise.reject
.
Isso pode ser útil em situações em que você precisa criar uma promessa para padronizar a forma como lida com operações assíncronas.
Por exemplo, aqui está como criar uma promessa resolvida:
const resolvedPromise = Promise.resolve("Promessa resolvida");
E aqui está como criar uma promessa rejeitada:
const rejectedPromise = Promise.reject("Promessa rejeitada");
Use o método Promise.all
para executar várias promessas ao mesmo tempo
O método Promise.all
permite que você execute várias promessas ao mesmo tempo e aguarde até que todas elas sejam resolvidas ou uma delas seja rejeitada.
Ele recebe um array de promessas como parâmetro e retorna uma única promessa.
Por exemplo, aqui está como usar o método Promise.all
para ler vários arquivos ao mesmo tempo:
Promise.all([readFile("file1.txt"), readFile("file2.txt"), readFile("file3.txt")]) .then(results => console.log(results)) .catch(error => console.log(error));
Use o método Promise.race
para obter o resultado da primeira promessa a ser resolvida
O método Promise.race
permite que você obtenha o resultado da primeira promessa a ser resolvida ou rejeitada.
Ele recebe um array de promessas como parâmetro e retorna uma única promessa.
Por exemplo, aqui está como usar o método Promise.race
para obter o resultado da primeira chamada HTTP a ser concluída:
Promise.race([fetch("url1"), fetch("url2"), fetch("url3")]) .then(result => console.log(result)) .catch(error => console.log(error));
Use o método Promise.finally
para executar uma ação independentemente do resultado da promessa
O método Promise.finally
permite que você execute uma ação independentemente do resultado da promessa.
Ele é útil para limpar ou desfazer operações que foram feitas enquanto a promessa estava sendo executada.
Por exemplo, aqui está como usar o método Promise.finally
para remover um elemento de carregamento da tela depois que a promessa for resolvida ou rejeitada:
doSomething() .then(result => console.log(result)) .catch(error => console.log(error)) .finally(() => document.getElementById("loading").remove());
Use o método Promise.resolve
e Promise.reject
com parâmetros adicionais
Além de usar o método Promise.resolve
e Promise.reject
para criar promessas já resolvidas ou rejeitadas, você também pode passar parâmetros adicionais para esses métodos.
Isso é útil para passar informações adicionais para o manipulador de resultado ou erro da promessa.
Por exemplo, aqui está como usar o método Promise.resolve
com um parâmetro adicional:
const resolvedPromise = Promise.resolve("Promessa resolvida", 42); resolvedPromise.then((result, additionalParam) => console.log(result, additionalParam)); // "Promessa resolvida" 42
E aqui está como usar o método Promise.reject
com um parâmetro adicional:
const rejectedPromise = Promise.reject("Promessa rejeitada", 42); rejectedPromise.catch((error, additionalParam) => console.log(error, additionalParam)); // "Promessa rejeitada" 42
Essas são algumas dicas adicionais para usar promessas em JavaScript.
Espero que elas lhe ajudem a lidar com operações assíncronas de forma mais eficiente e organizada em seu código.
Deixe um comentário contando o que achou deste artigo 🙂
Quer aprender mais sobre JavaScript? Confira o vídeo abaixo:
Conclusão
Neste artigo você aprendeu a como usar promessas em JavaScript
Apresentamos diversos métodos para você trabalhar com promises, e também entender melhor como o recurso funciona
Está buscando a sua primeira vaga como Programador? Confira o nosso treinamento completo clicando aqui.
Uma plataforma de cursos com projetos completos, comunidade de alunos e muito mais!
Há também o nosso canal no YouTube, com muito conteúdo gratuito de qualidade!