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

205
Vistas
Tratando de comprender las diferencias entre estas promesas y setTimeouts

Estoy aprendiendo sobre promesas, setTimeout y llamadas asíncronas y he hecho un gran trabajo al confundirme. Creo que me falta algo de comprensión sobre la devolución de llamada y cómo funciona setTimeout. He estado mirando la documentación de Mozilla y las diversas publicaciones de Stackoverflow sobre estos temas. Todavía tengo problemas para entender por qué algunas de las funciones que he creado se comportan de la manera en que lo hacen con respecto a los tiempos de espera establecidos.

Entre wait0 y wait1 No entiendo por qué el tiempo de espera para wait0 funciona correctamente y wait1 no se adhiere a él. Con wait2 es como wait1 excepto envuelto en una expresión de función de flecha. ¿Por qué eso hace que el tiempo de espera funcione correctamente? wait3 en realidad no está usando la devolución de llamada, por lo que tiene sentido por qué la promise y then las funciones no hacen nada. Pero detiene la ejecución de wait4 . ¿Está bloqueando la progresión indefinidamente o realmente terminando la ejecución? Para wait4 , tampoco estoy pasando un valor a la devolución de llamada como con wait0 pero no se cumple el tiempo de espera.

 function wait0() { return new Promise((resolve, failure)=>{ setTimeout(resolve, 2000); }); } function wait1() { return new Promise((resolve, failure)=>{ setTimeout(resolve('resolved ' + new Date().toGMTString()), 2000); }); } function wait2() { return new Promise((resolve, failure)=>{ setTimeout(()=>{ resolve('resolved ' + new Date().toGMTString()); }, 2000); }); } function wait3() { return new Promise((resolve, failure)=>{ setTimeout(()=>{}, 2000); }); } function wait4() { return new Promise((resolve, failure)=>{ setTimeout(resolve(), 2000); }); } async function test() { await wait0().then((result)=>console.log(result)); // Works as expected console.log(new Date().toGMTString()); await wait1().then((result)=>console.log(result)); // Doesn't adhere to timeout console.log(new Date().toGMTString()); await wait2().then((result)=>console.log(result)); // Works as expected console.log(new Date().toGMTString()); await wait3().then((result)=>console.log(result)); // Never resolves console.log(new Date().toGMTString()); await wait4().then((result)=>console.log(result)); // Doesn't adhere to timeout console.log(new Date().toGMTString()); } test();
about 4 years ago · Juan Pablo Isaza
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