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

113
Visualizações
cómo obtener una devolución de llamada de collection.each{fn} discord.js

Quiero hacer un bot de discordia que obtenga todos los archivos adjuntos de imágenes y los fusione en 1 pdf.

He dividido mi problema en 2 pasos, descargar y convertir a pdf.

Tuve éxito al descargar y convertir 1 imagen, usando devoluciones de llamada en la función de descarga.

Pero ahora quiero descargar múltiples imágenes que luego se fusionarán en 1 pdf. No puedo hacer una devolución de llamada para cada imagen que descargo porque quiero esperar hasta que se descarguen todas las imágenes para fusionarlas.

(Nombro las imágenes según su número para que me sea más fácil identificarlas en el proceso de fusión).

Aquí está mi código:

 client.on('messageCreate', msg => { if (msg.author.bot) return; file_number = 0 var attachments = msg.attachments attachments_size = attachments.size attachments.each(attachment => { var url = attachment ? attachment.url : null; file_number += 1 file_name = file_number + '.jpeg' download(url, file_name, function(){ }) }) convert_merge() }); var download = function(uri, filename, callback){ request.head(uri, function(err, res, body){ request(uri).pipe(fs.createWriteStream('./files/'+ filename)).on('close', callback); }); }; var convert_merge = function(callback){ var doc = new PDFDocument var doc_width = doc.page.height var doc_height = doc.page.width var writeStream = fs.createWriteStream('./files/merged.pdf') doc.pipe(writeStream) doc.rotate(90, {origin: [doc_width/2, doc_height/2]}); doc.image('./files/'+ `1.jpeg`, { fit: [doc_width+25, doc_height+35], align: 'center', valign: 'center' }); for (var i = 1; i <= file_number ; ++i) { doc.addPage() .image('./files/'+ i + `.jpeg`, { fit: [doc_width+25, doc_height+35], align: 'center', valign: 'center' }); } doc.end() };

Este es el error que tengo:

 node:internal/fs/utils:344 throw err; ^ Error: ENOENT: no such file or directory, open './files/1.jpeg'

Esto significa que 1.jpeg aún no existe, esto solo puede significar que convert_merge se está activando antes de que los attachments.each{} finalicen

Esto me hace dudar de 2 cosas:

  1. ¿Por qué JavaScript activa la función de conversión antes de la llamada atachement.each?
  2. ¿Hay una devolución de llamada para el archivo adjunto. cada llamada?

Finalmente, ¿cómo debo abordar este problema? Pensé en verificar si existe el último archivo del archivo adjunto antes de comenzar la conversión, pero no tuve éxito y no parecía ser el camino correcto.

Buscando algún consejo

Siéntase libre de pedir cualquier cosa

Gracias de antemano por tu ayuda :)

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