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

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

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

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

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