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

167
Vistas
Si se establece un objeto de promesa dentro de una función, ¿se eliminará el objeto de promesa de la memoria una vez que se complete la función?

Me preguntaba si uso el método de búsqueda para devolver un objeto de promesa para manejar la operación asincrónica dentro de una función que se ve así:

 <script> function test(){ let promise = fetch("https://xxx"); promise.then(()=>{console.log("completed!")}); }; test() </script>

Esto funcionará, pero mi pregunta es una vez que la función test () se ejecuta por completo, de acuerdo con lo básico en Javascript donde "Las variables de función (locales) se eliminan cuando se completa la función". , mi opinión es que la variable de promesa se eliminará y el objeto de promesa real se encuentra en algún lugar de la memoria y tendría una referencia 0, por lo que javascript lo eliminaría. Pero todavía funciona

¿Es la implementación de los conjuntos de objetos Promise que funciona de manera diferente en Javascript?

¡¡Muchas gracias!!

Actualización 1 : Lo siento por mi tonto error al no declarar la variable de promesa con let o var. Aquí para agregarlo. ¡Gracias!

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

0

Lo que tienes no es una variable local. Al declarar promise sin una palabra clave, ha creado una variable global adjunta a la ventana.

Si usa la palabra clave let o const , declarará una variable de alcance de bloque, que se recolectará como basura a discreción del sistema después de su uso. (O incluso var en este caso lo ampliará a la función)

 function test(){ const promise = fetch("https://xxx"); promise.then(()=>{console.log("completed!")}); };

Tenga en cuenta la const *

about 4 years ago · Juan Pablo Isaza Denunciar

0

Las variables no se borrarán de la memoria, a menos que no haya más punteros a las variables. Hay un recolector de basura en javascript responsable de verificar las referencias y liberar la memoria siempre que sea posible (Puede leer más sobre esto aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management ). Entonces, cuando las funciones terminaron, no puede acceder a la variable directamente, pero la memoria aún permanece ya que hay un puntero a la promesa que cambiaría el estado de la promesa dependiendo del resultado de la acción (cumplida o rechazada).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Este es un código incorrecto.

Debido a que no declaró que su variable de promise sea una variable local de la función, se convertirá en una global implícita y NO se recolectará basura porque es una global.

Si lo declara localmente con let , const o var en esa función (por lo que es una variable local dentro de esa función), entonces se recolectará basura cuando se hizo la promesa y se completó la función.

Entonces, si haces esto en su lugar:

 <script> function test(){ const promise = fetch("https://xxx"); promise.then(()=>{console.log("completed!")}); }; test() </script>

Luego, se recolectará como basura cuando se completen la función y la promesa.

Debe declarar explícitamente TODAS las variables con let o const en el ámbito en el que desea usarlas. Si bien var todavía funciona (por razones de compatibilidad con versiones anteriores), ya no hay razones para usarlo.

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