Que tipos de Promise conheces?
sobes.tech IA
Resposta da IA
Principais tipos de promessas no Node.js:
-
Promise Básico: É um contêiner para valores futuros ou erros. Tem três estados:
pending(pendente),fulfilled(cumprido),rejected(rejeitado). É criado com o construtornew Promise().// Criando uma promessa básica const myPromise = new Promise((resolve, reject) => { // Operação assíncrona setTimeout(() => { const success = true; if (success) { resolve("Operação concluída com sucesso"); } else { reject("Ocorreu um erro"); } }, 1000); }); -
Promise.resolve(): Cria uma promessa que passa imediatamente para o estado
fulfilledcom um valor dado.// Criando uma promessa resolvida const resolvedPromise = Promise.resolve("Esta já é uma promessa resolvida"); -
Promise.reject(): Cria uma promessa que passa imediatamente para o estado
rejectedcom uma razão de erro dada.// Criando uma promessa rejeitada const rejectedPromise = Promise.reject(new Error("Esta é uma promessa rejeitada")); -
Promise.all(): Toma um array de promessas e retorna uma nova promessa. Ela passa ao estado
fulfilledquando todas as promessas do array são concluídas com sucesso. O valor será um array de resultados na mesma ordem das promessas de entrada. Se qualquer das promessas for rejeitada,Promise.all()é rejeitada imediatamente com a razão da primeira promessa rejeitada.// Uso de Promise.all() const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = new Promise((resolve, reject) => setTimeout(() => resolve(3), 100)); Promise.all([promise1, promise2, promise3]) .then((values) => { // values será [1, 2, 3] }) .catch((error) => { // Tratamento de erros }); -
Promise.allSettled(): Toma um array de promessas e retorna uma nova promessa. Ela passa ao estado
fulfilledquando todas as promessas do array são concluídas, com sucesso (fulfilled) ou rejeitadas (rejected). O valor será um array de objetos descrevendo o resultado de cada promessa (estado e valor/razão). Diferente doPromise.all(), ela não rejeita imediatamente.// Uso de Promise.allSettled() const promiseA = Promise.resolve("sucesso"); const promiseB = Promise.reject("erro"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results será um array de objetos: // [{status: 'fulfilled', value: 'sucesso'}, {status: 'rejected', reason: 'erro'}] }); -
Promise.race(): Toma um array de promessas e retorna uma nova promessa. A nova promessa passa ao estado
fulfilledourejectedcom o resultado/razão da primeira promessa do array que se resolve ou rejeita.// Uso de Promise.race() const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Eu sou rápido!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Eu sou lento..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value será "Eu sou rápido!" }); -
Promise.any(): Toma um array de promessas e retorna uma nova promessa. A promessa passa ao estado
fulfilledcom o valor da primeira promessa que se resolve com sucesso. Se todas as promessas forem rejeitadas,Promise.any()retorna um erroAggregateErrorcontendo as razões de todas as promessas rejeitadas. Disponível a partir do Node.js 12.// Uso de Promise.any() const promiseFail1 = Promise.reject("Erro 1"); const promiseSuccess = Promise.resolve("Sucesso!"); const promiseFail2 = Promise.reject("Erro 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value será "Sucesso!" }) .catch((error) => { // Tratamento de AggregateError se todas as promessas forem rejeitadas });