Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!