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

101
Views
Cliente zip recuperación múltiple

Estoy desarrollando una pequeña aplicación que permite al usuario seleccionar algunos documentos en la interfaz y cuando hacen clic en "Descargar", se genera un zip con todos sus documentos.

Estoy usando client-zip para eso. Todo funciona bien con 1 documento (1 recuperación), pero hay un pequeño problema que no puedo resolver. ¿Cómo puedo agregar recuperaciones dinámicas en función de la cantidad de elementos en una matriz?

Mi código hasta ahora:

 const allDownloads = []; async function downloadTestZip() { const code = await fetch(allDownloads[0]); const blob = await downloadZip([code]).blob(); const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'test.zip'; link.click(); link.remove(); }

allDownloads=[] se completa cuando el usuario marca la marca de verificación junto al documento. Así que puede haber hasta 200 documentos diferentes.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tienes que crear una serie de Promesas y luego esperarlas todas:

 const promises = allDownloads.map( url => fetch(url) ); // or simply .map(fetch), as a shorthand const codes = await Promise.all(promises); // now codes is an array of codes (strings, probably?)
about 4 years ago · Juan Pablo Isaza Report

0

Para mejorar la latencia, puede usar un iterador asíncrono (client-zip se complace en tomar eso en lugar de una matriz).

 async function *lazyFetch() { for (const url of allDownloads) yield await fetch(url) } const blob = await downloadZip(lazyFetch()).blob()

Funcionalmente hace lo mismo que la solución con Promise.all (y es apenas más código). Sin embargo, client-zip podrá comenzar a procesar los datos tan pronto como la primera respuesta esté lista (en lugar de las 200).

¿Cómo ayuda eso?

La creación del archivo ZIP implica algunos cálculos y copias. Entonces, si deja que client-zip comience temprano, todas esas cosas que requieren un uso intensivo de la CPU pueden ocurrir mientras el navegador maneja la solicitud HTTP para el siguiente archivo. Los navegadores suelen tener un grupo de clientes HTTP y no iniciarán 200 solicitudes al mismo tiempo.

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!