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

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

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 Relatório

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 Relatório

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