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

70
Visualizações
Cómo detener el procesamiento que continúa más allá de un rechazo de promesa

Tengo un código asíncrono que me gustaría dejar de ejecutar cuando lo reject .

Nota:

 let ingestPromises = event.Records.map(async (record, i) => { let camera = JSON.parse(record.body) return new Promise(async (resolve, reject) => { let imageBuffer; try { imageBuffer = await retrieveImageFromURI(camera.ing_uri) console.log(`Record #${i} Successful Ingestion from URI`); } catch (err) { console.log("Going to reject"); reject({ 'Task': `Attempting to pull image from camera (${camera.camName}`}) console.log("Rejected"); } console.log("Going to save file now..."); // ... blah blah more code ... })} let settledPromises = await Promise.allSettled(ingestPromises) console.log('All promises settled :>> ', settledPromises);

Cuando ejecuto esto contra un uri no válido, la función retrieveImageFromURI arroja un error de tiempo de espera como se esperaba. Esto omite el mensaje "Registrar X ingestión exitosa..." y salta al bloque catch como se esperaba. Sin embargo, entonces las cosas van inesperadamente.

La salida del código anterior, cuando retrieveImageFromURI arroja un error, se ve así:

 Going to reject Rejected Going to save file now... All promises settled :>> [ { status: 'rejected', reason: { Task: 'Attempting to pull image from camera (TEST Camera)' } }]

Espero que el rechazo detenga cualquier procesamiento adicional dentro de esa promesa (como lo haría una devolución) y NO vería 'Rechazado' ni 'Voy a guardar el archivo ahora...' console.logs...

¿Qué estoy malinterpretando aquí?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Agregue return para detener la ejecución, ya que el reject es solo una función, no puede hacer que la función deje de ejecutarse.

 try { // ... } catch (err) { console.log("Going to reject"); reject({ 'Task': `Attempting to pull image from camera (${camera.camName}` }); console.log("Rejected"); return; }

Si tiene una cláusula finally , deberá agregar una variable para realizar un seguimiento:

Nota: Esto no es útil aquí, ya que se supone que finally debe ejecutarse independientemente de si se produjo la catch , pero si tiene comprobaciones adicionales dentro de la catch , el return irá a finally , por lo que se necesita una variable adicional.

 let shouldReturn = false; try { // ... } catch (err) { console.log("Going to reject"); reject({ 'Task': `Attempting to pull image from camera (${camera.camName}` }); console.log("Rejected"); let shouldReturn = true; return; } finally { if (shouldReturn) return; }
about 4 years ago · Juan Pablo Isaza Relatório

0

No hay nada especial en invocar el rechazo. Es solo una función. Si desea evitar el procesamiento posterior, su función debería return .

 try { imageBuffer = await retrieveImageFromURI(camera.ing_uri) console.log(`Record #${i} Successful Ingestion from URI`); } catch (err) { console.log("Going to reject"); reject({ 'Task': `Attempting to pull image from camera (${camera.camName}`}) console.log("Rejected"); return; }
about 4 years ago · Juan Pablo Isaza Relatório

0

¿Debo regresar después de una resolución/rechazo anticipado? indica que el primer reject (o una resolve ) definirá el valor cumplido de una Promesa, pero activamente NO detienen la ejecución y se necesita una devolución.

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