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

213
Vistas
NodeJs javascript: espere hasta que se asigne la propiedad del objeto anterior antes de asignar la siguiente propiedad

Supongamos que tengo un código como este:

 let result = { name: downloadNameFromInternetVerySlow(), isFamous: determineIfNameIsFamous(this.name); }
 const downloadNameFromInternetVerySlow = () => { path = "/home"; const folders = fs.readdirSync(path).filter(file => fs.lstatSync(path).isDirectory()); console.log(folders); return folders[0]; }

downloadNameFromInternetVerySlow puede llevar mucho tiempo, mientras tanto, determineIfNameIsFamous depende del resultado de downloadNameFromInternetVerySlow para devolver el valor correcto.

¿Cómo me aseguro de que determineIfNameIsFamous solo se ejecute después de que finalice downloadNameFromInternetVerySlow ?

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

0

Puede convertir downloadNameFromInternetVerySlow en Promise (si aún no lo ha hecho). y luego el usuario await para esperar hasta que termine. De lo contrario, puede usar Promise.then()

(Esto debería estar dentro de una función async )

 let name = await downloadNameFromInternetVerySlow(), let isFamous = determineIfNameIsFamous(this.name); let result = { name, isFamous }

Otro método usando Promise.then

 let name, isFamous; downloadNameFromInternetVerySlow().then(result => { name = result; isFamous = determineIfNameIsFamous(this.name); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Suponiendo que downloadNameFromInternetVerySlow sea asíncrono (de lo contrario, ya funcionaría como usted desea), la solución es usar await .

Tenga en cuenta que, para poder hacer eso, este código debe incluirse en una función async (o en un nivel superior con espera de nivel superior disponible).

 async function getAndUseResult(){ let result = { name: await downloadNameFromInternetVerySlow(), isFamous: determineIfNameIsFamous(this.name) } console.log(JSON.stringify(result)) } getAndUseResult();
about 4 years ago · Juan Pablo Isaza Denunciar

0

asíncrono/espera

Hay una sintaxis especial para trabajar con promesas de una manera más cómoda, llamada " async/await ".

Una función asíncrona devuelve una promesa, como en este ejemplo:

 const doSomethingAsync = () => { return new Promise(resolve => { setTimeout(() => resolve('I did something'), 3000) }) }

Cuando desee llamar a esta función, anteponga esperar y el código de llamada se detendrá hasta que la promesa se resuelva o rechace. Una advertencia: la función del cliente debe definirse como asíncrona. Aquí hay un ejemplo:

 const doSomething = async () => { console.log(await doSomethingAsync()) }
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