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();