• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

185
Vistas
Cómo sincronizar correctamente en un foor loop

Estoy tratando de almacenar algunos datos en un grupo de archivos PDF usando Puppeteer. Pero cuando trato de ejecutar este código, mi aplicación se congela y asumo que estoy haciendo algo mal con el código asíncrono y en espera. Parece estar funcionando correctamente, los documentos se crean correctamente en la carpeta del proyecto, pero en algún momento el nodo falla y debo reiniciar mi PC.

 const path = require("path"); const puppeteer = require("puppeteer"); const fs = require('fs'); for (let index = 0; index < documentsToPDF.length; index ++) { const result = await generatePDF(documentsToPDF[index]); await createAndSavePDFInFile(documentsToPDF[index], result); } async function generatePDF(browser, numdoc) { const filePage = await browser.newPage(); filePage.setDefaultNavigationTimeout(0); await filePage.goto(renderPath(numdoc), { waitUntil: "networkidle0", }); return filePage.pdf({ format: "A4", }); } async function createAndSavePDFInFile(numdoc, result) { console.log(result); if(result) { return fs.writeFile( path.join(__dirname, `../results/result-${numdoc}.pdf`), result, (error, result) => { if(error) console.log('error', err); else console.log(`PDF result-${numdoc}.pdf `); } ); } else { console.log(`numdoc `, numdoc, ' could not be saved into pdf'); } }

Gracias por su ayuda, soy nuevo en node y estoy aprendiendo :)

EDITAR:

Este bucle ahora funciona bien

 for (let index = 0; index < documentsToPDF.length; index += 1) { const browser = await puppeteer.launch(puppeteerParams); const result = await generatePDF(browser,documentsToPDF[index]); await createAndSavePDFInFile(documentsToPDF[index], result); browser.close(); console.log('Exp: ', documentsToPDF[index], ' SUCCESS'); }

Pero puedo hacer algo como esto?

 const pdfPromises = []; for (let index = 0; index < documentsToPDF.length; index += 1) { pdfPromises.push(createPdf(puppeteer, puppeteerParams, documentsToPDF[index])) } await Promise.all(pdfPromises); async function createPdf(puppeteer, puppeteerParams, numexp) { const browser = await puppeteer.launch(puppeteerParams); const result = await generatePDF(browser, numexp); await createAndSavePDFInFile(numexp, result); browser.close(); console.log('Exp: ', numexp, ' SUCCESS'); }

Lo he probado y me devuelve este error:

MaxListenersExceededWarning: se detectó una posible pérdida de memoria de EventEmitter. Se agregaron 11 detectores de eventos. Utilice emitter.setMaxListeners() para aumentar el límite.

over 3 years ago · Juan Pablo Isaza
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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda