Método de Promise


Método then()

O método then() é executado quando uma Promise é resolvida (a função resolve() é chamada).

wait("Frase 1").then((response) => {
	console.log(response);
});
// Saída: Frase 1

É possível encadear vários then() para criar um fluxo sequencial:

wait("Frase 1")
	.then((response) => {
	  console.log(response);
	  return wait("Frase 2");
	})
	.then((response) => {
	  console.log(response);
	  return wait("Frase 3");
	})
	.then((response) => {
	  console.log(response);
	});
// Saída:
// Frase 1
// Frase 2
// Frase 3

Método catch()

O método catch() é executado quando uma Promise é rejeitada (a função reject() é chamada).

wait("Frase 1")
	.then((response) => {
	  console.log(response);
	  return wait("Frase 2");
	})
	.then((response) => {
	  console.log(response);
	  return wait("Frase 3");
	})
	.then((response) => {
	  throw new Error();
	})
	.catch((err) => console.error(err));
// Saída:
// Frase 1
// Frase 2
// Error

Método Promise.all()

Executa um array de Promises e retorna uma única Promise resolvida se todas as Promises no array forem resolvidas. Caso contrário, retorna uma Promise rejeitada assim que a primeira Promise no array for rejeitada.

const promises = [
	"Primeiro valor",
	wait("Promise 1"),
	wait("Promise 2"),
	wait("Promise 3"),
	"Segundo valor",
];
 
Promise.all(promises)
	.then((value) => {
	  console.log(value);
	})
	.catch((error) => {
	  console.log(error);
	});
/* Saída:
[
'Primeiro valor',
'Segundo valor'  
'Promise 1',     
'Promise 2',     
'Promise 3',     
]
*/

Método Promise.race()

Retorna a primeira Promise resolvida em um array de Promises.

const promises = [
	"Primeiro valor",
	wait("Promise 1"),
	wait("Promise 2"),
	wait("Promise 3"),
];
 
Promise.race(promises)
	.then((value) => {
	  console.log(value);
	})
	.catch((error) => {
	  console.log(error);
	});
// Saída: "Primeiro valor"

Método Promise.resolve()

Retorna uma Promise já resolvida com o valor especificado.

function downloadPage() {
	const isCache = true;
	
	if (isCache) {
	  return Promise.resolve("Página em cache");
	}
	
	return wait("Página baixada");
}
 
downloadPage()
	.then((pageData) => {
	  console.log(pageData);
	})
	.catch((error) => console.log(error));
// Saída: Página em cache

Método Promise.reject()

Retorna uma Promise já rejeitada com a razão especificada.

function downloadPage() {
	const isCache = true;
	
	if (isCache) {
	  return Promise.reject("Página em cache");
	}
	
	return wait("Página baixada");
}
 
downloadPage()
	.then((pageData) => {
	  console.log(pageData);
	})
	.catch((error) => console.log("ERRO:", error));
// Saída: ERRO: Página em cache

Tratamento de promises rejeitadas

O tratamento de promises rejeitadas pode ser realizado utilizando try-catch em uma função assíncrona:

async function execute() {
  try {
    const function1 = await wait("Função 1
 
");
    console.log(function1);
 
    const function2 = await wait("Função 2");
    console.log(function2);
 
    const function3 = await wait("Função 3");
    console.log(function3);
  } catch (error) {
    console.log(error);
  }
}
 
execute();

Referências