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

184
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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