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
jszip espere la creación de zip antes de trabajar con datos

Trabajando en una implementación nodejs de JSZip para crear un archivo zip en formato de cadena binaria y almacenar su valor en una variable global; sin embargo, a pesar de usar async/await, la cadena zip se imprime antes de que finalice el proceso de compresión.

Aquí está mi código hasta ahora:

 const JSZip = require("jszip"); const zip = new JSZip(); let s="not yet done"; let zipstring = ""; async function dozipping() { zip.file("Hello.txt", "Hello World\n"); zip.generateAsync({ type: "binarystring" }) .then(function(content) { console.log("doing"); zipstring = content; }); } async function status() { console.log(s) await dozipping(); console.log(zipstring) s = "done"; console.log(s) } status();

Rendimiento esperado

 not yet done doing *zipstring value* done

Salida que estoy obteniendo actualmente

 not yet done done doing

Soy nuevo en el nodo y trabajo con jszip por primera vez y la documentación es un poco confusa, lo siento de antemano si la pregunta es demasiado trivial.

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

0

Esto se debe a que .then de zip.generateAsync no detiene la ejecución. Vas a necesitar usar

 zipstring = await zip.generateAsync(...);

Await detiene la ejecución de una función asincrónica hasta que se resuelve la promesa.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La razón por la que no obtuvo nada es que las promesas son asíncronas y se llaman una vez que la tarea asíncrona se completa con el estado como fulfilled o rejected . Le he hecho algunos cambios:

 const zip = new JSZip(); let s="not yet done"; let zipstring = ""; async function dozipping(){ zip.file("Hello.txt", "Hello World\n"); try { console.log("doing"); const response = await zip.generateAsync({type:"binarystring"}); zipstring = response; return response; } catch (error) { console.error(error); } } async function status(){ try { console.log(s) await dozipping(); console.log(zipstring) s="done"; console.log(s) } catch (error) { console.error(error); } } await status();

Le sugiero que primero revise cómo funcionan las promesas y cómo se debe usar async\await . Son solo un azúcar sintáctico en él. Adjunto el enlace a través de ellos.

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