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

157
Vistas
Alcance del parámetro pasado a la función asíncrona
{ const data = new Uint8Array([0x01]); await input_writer.write(data); }

En el ejemplo anterior, los 'datos' se pasan a una operación asíncrona y luego se excluyen inmediatamente. ¿Qué sucede con la memoria subyacente? ¿Se mantiene vivo hasta que la función asíncrona finaliza con él?

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

0

Al principio pensé que data solo se podían recolectar basura al final del bloque de código, pero parece que el motor de JavaScript es más inteligente de lo que pensaba.

De hecho, al ejecutar este fragmento:

 class Test {} (async function() { const data = new Test; await write(data); console.log('never'); function write(data) { return new Promise(() => {}); } })();

Luego, al usar la pestaña "Memoria" para tomar una instantánea de la memoria, no aparece ninguna Test al buscarla.

Sin embargo, si prueba este fragmento y toma una nueva instantánea, la instancia se muestra porque esta implementación de write pasa data a setTimeout que mantiene una referencia a los data durante un tiempo determinado:

 class Test {} (async function() { const data = new Test; await write(data); console.log('in a long time'); function write(data) { return new Promise(resolve => setTimeout(() => resolve(data), 999999999)); } })();

Nota: tienes que pegarlo en tu consola para verlo en la instantánea de la memoria.

Como conclusión, si la write no tiene ningún efecto secundario que guarde una referencia en data , el motor de JavaScript (al menos Chrome) parece ser lo suficientemente inteligente como para determinar que data ya no se usarán incluso antes del final del bloque de código. lo que ayuda a borrar la memoria lo antes posible.

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