Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

240
Visualizações
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 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda