Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

377
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!