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

380
Visualizações
Regresar en .then(), cuando hay múltiples .then()?

Js no es mi primer idioma, por mucho. Codifico en 5 o 6 más, y me siento cómodo con las devoluciones de llamadas, lo que significa que debería poder asimilar las promesas.

Sin embargo, heredé un proyecto node.js con algo como esto (simplificado), lo que me hace dudar)

 let promise = someFunction.then({return xxxx;}); // lots of more code & promises Promises.all().then(() => {return somethingElse});

Me siento cómodo con muchas promesas y Promises.all() para await a que se resuelvan todas (aunque estoy reemplazando all .then con .then por un código más limpio), PERO ...

que return dentro de un .then me inquieta. Si lo entiendo correctamente, .then simplemente envuelve una devolución de llamada asíncrona, lo que podría ocurrir en cualquier momento, incluso antes que el resto del código y Promises.all , dejando parte del código sin ejecutar.

¿Estoy en lo correcto al estar preocupado, o hay algo que me estoy perdiendo?

Tl;dr: ¿está bien regresar dentro de un .then ?

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

0

Volver adentro .then es extremadamente común y está bien hacerlo. Lo que hace es generar una Promesa que ahora se resuelve en el valor devuelto (en lugar del valor devuelto por la Promesa anterior). Ejemplo:

 // resolves to 1 const prom1 = Promise.resolve(1); // chains off of prom1, resolves to 2 const prom2 = prom1.then(() => { return 2; }); prom1.then(console.log); setTimeout(() => { prom2.then(console.log); });

Esta técnica es muy útil cuando necesita pasar un valor de un .then anterior a un .then posterior.

 const makeApiCall = num => Promise.resolve(num + 3); Promise.resolve(1) .then((result1) => { return makeApiCall(result1); }) .then((result2) => { console.log(result2); });

Qué hará la devolución en su situación específicamente:

 let promise = someFunction.then({return xxxx;}); // lots of more code & promises Promises.all().then(() => {return somethingElse});

Si se pasa la promise a Promise.all , entonces su valor de resolución será xxxx , en lugar de lo que alguna someFunction resuelva. (Si Promise.all 's .then ignora su argumento, entonces no hace nada excepto esperar a que se resuelva el valor devuelto, si es una Promesa).

 const someFunction = () => Promise.resolve(1); let promise = someFunction().then(() => { return 'xxxx'; }); Promise.all([promise]).then((allResults) => { console.log('allResults', allResults); return 'somethingElse'; }) .then((result2) => { console.log('Next `.then`', result2); });

Tenga en cuenta que su código actual tiene una serie de problemas de sintaxis que debe corregir.

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