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

135
Visualizações
Problema asíncrono con Javascript FileReader

En mi aplicación web, intento procesar una serie de objetos de archivo, que son archivos adjuntos para el correo electrónico que se enviará. Paso por esta matriz en una función para obtener el contenido del archivo y agregarlo a la matriz de archivos adjuntos del objeto de mensaje. El siguiente es el código:

 export class Message { constructor( public subject: string = '', public text: string = '', public attachments: Attachment[] = []) {} } function getMessage(message: NewMessage, attachments: File[]) { attachments.forEach(file => { let newAttachment = new Attachment(); newAttachment.dateiname = file.name; newAttachment.dateityp = file.type; newAttachment.size = file.size; const reader = new FileReader(); reader.onload = (event) => { newAttachment.fileData = event.target.result.toString(); message.attachments.push(newAttachment); }; reader.readAsText(file); }); return message; }

El problema al que me enfrento se debe al hecho de que una instancia de FileReader funciona de forma asíncrona. Mi método regresa antes de que se active el evento onload y el contenido del archivo se agrega al objeto del mensaje. Intenté devolver el objeto del mensaje a través del evento onloadend, pero aquí aparece el error de que la función debe devolver un valor de tipo Mensaje:

 reader.onloadend = () => { return message; };

¿Cómo puedo solucionar este problema?

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