Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

165
Vistas
¿No se pueden tener múltiples esperas en la misma función asíncrona?
function fakeRequest(url) { return new Promise((resolve, reject) => { delay = Math.floor(Math.random() * 4500) + 500; setTimeout(() => { if (delay > 4500) { resolve(url + ": success") } else { reject(url = ": error") } }, delay); }) }) } async function makeTwoRequests() { let data1 = await fakeRequest("/page1"); console.log("Data 1:", data1) let data2 = await fakeRequest("/page2"); console.log("Data 2:", data2) } makeTwoRequests()

Cuando elimino data1 o data2 y solo tengo 1 en espera, funciona. Pero cuando hay 2 o más, sale un error diciendo: No Uncaught (in promise) : error No sé qué está pasando aquí. Por favor, ayúdame

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si esperas una promesa que rechaza, se convierte en un error arrojado.

Cambie el reject dentro de fakeRequest a una resolución y apuesto a que el problema desaparece.

Esto funciona para mí:

 function fakeRequest(url) { return new Promise((resolve, reject) => { let delay = Math.floor(Math.random() * 4500) + 500; setTimeout(() => { if (delay > 4500) { resolve(url + ": success") } else { resolve(url + ": error") } }, delay); }) } async function makeTwoRequests() { let data1 = await fakeRequest("/page1"); console.log("Data 1:", data1) let data2 = await fakeRequest("/page2"); console.log("Data 2:", data2) } makeTwoRequests()

Hubo un par de otros problemas con el código de muestra:

  • el delay debe declararse con una palabra clave como let , const o var ; esto es necesario para garantizar que cada invocación de la función use su propia versión privada en lugar de una compartida, y para evitar que esta función cambie las variables en el ámbito externo.
  • la llamada de reject usa = en lugar de + , que redefine y devuelve la variable url en lugar de concatenar la cadena de URL con el literal : error
  • hubo un cierre adicional }) , que impidió que este código se analizara

Pero creo que entiendo lo que está haciendo: está tratando de simular una situación en la que las llamadas a la API generalmente tienen éxito, excepto algunas que fallan por el tiempo de espera.

Su fakeRequest logra eso, pero su código de llamada no es capaz de manejar el problema. Para eso, necesitarías algo como esto:

 async function makeTwoRequests() { let data1 try { data1 = await fakeRequest("/page1"); } catch ( error ) { console.error(`request 1 threw`, error) // here, you might return, or re-throw, or fall through } let data2 try { data2 = await fakeRequest("/page2"); } catch ( error ) { console.error(`request 2 threw`, error) // here, you might return, or re-throw, or fall through } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda