Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
¿Se resuelve una promesa cuando le agrego .catch?

Soy nuevo en mecanografiar/javascript, así que no sé mucho sobre promesas. Aquí está mi caso de uso: estoy creando tres promesas diferentes dentro de mi función de nube y luego las devuelvo con Promise.all([promise1, promise2, promise3]). Cada una de estas promesas se crea dentro de una función con "return Promise...".

Mi pregunta es, cuando agrego ".catch" dentro de estas funciones, ¿seguirá funcionando Promise.all ? ¿Hace alguna diferencia devolver someServiceThatCreatesPromise() con y sin .catch() ?

Código

 export async function myCloudFirestoreFunction() { try { const myFirstPromise = createFirstPromise() const mySecondPromise = createSecondPromise() const thirdPromise = createThirdPromise() return Promise.all([ myFirstPromise, mySecondPromise, myThirdPromise ]); } catch (err) { functions.logger.err(`Something bad happened, See: ${(err as Error).message}` } } // Difference with and without `.catch`? function createFirstPromise() { return someServiceThatCreatesPromise().catch((err) => { // LOGGING }); } // Difference with and without `.catch`? function createSecondPromise() { return someServiceThatCreatesPromise().catch((err) => { // LOGGING }); } // Difference with and without `.catch`? function createThirdPromise() { return someServiceThatCreatesPromise().catch((err) => { // LOGGING }); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Agregar .catch dentro createNPromise no afectará nada suponiendo que todas sus Promise se resuelvan y no rechacen.

Sin embargo, si uno de los Promise s rechaza y lo detecta dentro del método .catch , entonces no funcionará como esperaba a menos que vuelva a generar ese error y lo detecte nuevamente dentro de try/catch en su función myCloudFirestoreFunction .

 async function myCloudFirestoreFunction() { try { const result = await Promise.all([ createFirstPromise(), createSecondPromise() ]); } catch (error) { console.log({ error }); } } function createFirstPromise() { return Promise.reject("Oof").catch((e) => { // do work, eg log, then // pass the error forward so that it can be caught // inside the caller throw e; }); } function createSecondPromise() { return Promise.resolve("value"); } myCloudFirestoreFunction();

Alternativamente, simplemente catch errores dentro de la persona que llama ( myCloudFirestoreFunction ) en lugar de detectarlos por separado.

 async function myCloudFirestoreFunction() { const result = await Promise.all([ createFirstPromise(), createSecondPromise() ]).catch((err) => console.log({ err })); } function createFirstPromise() { return Promise.reject("Oof"); } function createSecondPromise() { return Promise.resolve("value"); } myCloudFirestoreFunction();

about 4 years ago · Juan Pablo Isaza Relatório

0

cuando agrego ".catch" dentro de estas funciones, ¿seguirá funcionando Promise.all?

Llamar a catch() en una promesa no cambia de ninguna manera la forma en que funciona la promesa original. Simplemente adjunta una devolución de llamada que se invoca cuando se rechaza la primera promesa, y también devuelve otra promesa que se resuelve después de que se cumple o se rechaza la promesa original.

¿Hace alguna diferencia devolver someServiceThatCreatesPromise() con y sin .catch()?

No haría ninguna diferencia en el código que depende de la promesa devuelta. Tanto la promesa original como la devuelta por catch() le dirán al código descendente cuándo se realiza el trabajo original al cumplirse.

Sugiero leer documentación completa sobre promesas, por ejemplo:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Allí hay un diagrama que puedes seguir para comprender lo que sucede en cada turno. También en ese documento, usted leerá:

El procesamiento continúa hasta el siguiente eslabón de la cadena incluso cuando .then() carece de una función de devolución de llamada que devuelve un objeto Promise. Por lo tanto, una cadena puede omitir con seguridad cada función de devolución de llamada de rechazo hasta el .catch() final.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda