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 3Mé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
// ErrorMé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 cacheMé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 cacheTratamento 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();