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

164
Visualizações
¿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 Respostas
Responde à pergunta

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 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