• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

168
Views
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.

about 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error