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

185
Visualizações
cómo asignar una constante de nivel superior de una promesa cuando la espera de nivel superior no está disponible

Estoy tratando de asignar una const en el nivel superior, donde el valor debe provenir de una función asíncrona. Sin embargo, la versión de nodejs en el servidor de producción que estoy usando no es lo suficientemente nueva como para recibir soporte, por lo que no puedo hacer algo como esto:

 const value = await f(x)

No puedo declarar la variable dentro de algo then porque no está en el nivel superior, por lo que algo como esto no funcionará :

 f(x).then(val=>{const value=val}) // no top-level const value afterwards

¿Cómo puedo inicializar el const correctamente en este entorno?

Si ayuda, para este caso particular, la función en realidad regresa de forma sincrónica para el valor particular que le estoy pasando, pero dado que está definida como asíncrona y, a veces, regresa de manera asíncrona, en realidad está devolviendo una Promesa todo el tiempo.

Como solución (horrible), consideré simplemente asignar la const a la Promesa y luego extraer el valor cada vez que lo necesitaba usando .then() . Sin embargo, a pesar de que se resolvió la Promesa, esto parece hacer que el valor siempre se extraiga de forma asíncrona, lo que significa que no funcionará porque cuando necesito el valor lo necesito justo en ese punto y no después de que se complete la función actual o cuando sea.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Debe definir su var con "let" en lugar de const, luego asigne el valor en "then".

 let value; f(x).then(val => value = val)

Tal vez tengas una mejor manera de hacer esto, pero con el contexto que tenemos, lo haría de esta manera.

about 4 years ago · Juan Pablo Isaza Relatório

0

Tendrás que mover todo el código que necesite el valor de esa const dentro de una función. Muévalo en un (grande) then devuelva la llamada, o cree un contenedor de función async .

Así que digamos que su código ahora se ve así:

 async function f(x) { // .... return //... } function g(value) { // something } const value = await f(x); // ... g(value); // ... console.log(value); // ...

Luego cambia eso a:

 (async function main() { async function f(x) { // .... return // ... } function g(value) { // something } const value = await f(x); // ... g(value); // ... console.log(value); // ... })(); // Execute main

De acuerdo, no es absolutamente necesario mover todo lo que contiene, pero esto solo muestra cómo puede resolver su problema.

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