DEV Community

Gustavo Inocencio
Gustavo Inocencio

Posted on

2 2

Uso de Promises

Na programação assíncrona um recurso bastante utilizado é o de Promises, já que sempre queremos que nossas operações e nosso código rodem o mais rápido possível,
assim um recurso que nos permite paralelizar o máximo de ações é extremamente útil.

A estrutura de uma Promise é a seguinte:

// Criando uma promise
const p = new Promise((resolve, reject) => {
  try {
    resolve(funcaoX())
  } catch (e) {
    reject(e)
  }
})

// Executando uma promise
p
  .then((parametros) => /* sucesso */)
  .catch((erro) => /* erro */)

// Tratando erros e sucessos no then
p
  .then(resposta => { /* tratar resposta */ }, erro => { /* tratar erro */ })
Enter fullscreen mode Exit fullscreen mode

Nesse artigo citarei algumas funcionalidades de Promises quando existe a necessidade de executar mais de uma.

Promise.race: executa a mais rápida 
Nessa funcionalidade todas as promises iniciam a execução ao mesmo tempo, mas apenas a primeira a ser resolvida tem seu valor retornado.
Essa funcionalidade permite que sejam utilizados mais de uma fonte para a informação buscada e assim ter a mais rápida do momento.

Promise.all: executa todas
Nessa funcionalidade todas as promises iniciam a execução ao mesmo tempo e vão sendo resolvidas.
O problema dessa funcionalidade é que se uma das promises for rejeitada todas são rejeitadas. Essa funcionalidade pode ser usada quando existem várias consultas a APIs diferentes a serem feitas para uma mesma tela e todas as informações precisam ser mostradas.

Promise.allsettled: executa todas, mesmo que falhe e retorna a informação de cada uma se falhou ou não 

Assim como Promise.all, nessa funcionalidade todas as promises iniciam a execução ao mesmo tempo e vão sendo resolvidas.
Mas se uma das promises for rejeitada as outras ainda são resolvidas. Essa funcionalidade pode ser usada quando existem várias consultas a APIs diferentes a serem feitas para uma mesma tela, mas para componentes diferentes. Por exemplo, um dashboard. Assim, se uma das informações não for trazida, as outras ainda podem ser apresentadas.

Mais informações sobre Promises podem ser encontradas em:
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more