• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

123
Views
¿Por qué obtengo un comportamiento inesperado en mi implementación de Promise.race()?

Tengo el código para mi implementación de Promise.race(), y básicamente funciona . Sin embargo, en este caso:

 promiseRace([Promise.reject('test_error'), Promise.resolve('test_value')])

test_value en lugar de test_error .
¿Por qué sucede?

 const promiseRace = promises => new Promise((resolve, reject) => { promises.forEach(p => { if ( typeof p === 'object' && 'then' in p && typeof p.then === 'function' ) { p.then(resolve).catch(reject); } else { resolve(p); } }); }); promiseRace([Promise.reject('test_error'), Promise.resolve('test_value')]).then(value => { console.log(value); });

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto sucede porque en la siguiente línea llamas a .catch en otra promesa (encadenada), no en la promesa original:

 p.then(resolve).catch(reject);

Tenga en cuenta cómo la llamada then no recibe un argumento de devolución de llamada de reject , por lo que hay un ciclo de promesa asíncrono intermedio adicional. En el momento en que se llama a la devolución de llamada .catch ( reject ), el otro caso ya se ha tratado (la promesa cumplida).

Así que cambia a:

 p.then(resolve, reject);
almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error