Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
La propiedad de clase es nula después de llamar a FileReader

No estoy completamente seguro de cómo arreglar esto. Mi objetivo es llamar al lector de archivos en el documento de Excel y luego poder recuperar información adicional después de que se haya analizado el archivo. Pero la sincronización de FileReader es asíncrona, cuando voy a acceder a las propiedades de obj como obj.workbook, siempre imprime nulo. ¿Cómo resuelvo esto?

Entonces, en el código a continuación, notará que después de llamar a 'parse()' llamo a console.log('obj.workbook:', obj.workbook) que imprime nulo en la consola. Esperaría que imprima el valor del libro de trabajo asignado en el método de parse llamado anterior.

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script> <script> class ExcelDoc { constructor(file) { this.file = file; this.workbook = null; } // Methods parse() { var reader = new FileReader(); reader.onload = () => { this.workbook = XLSX.read(reader.result, { type: 'binary' }); }; reader.onerror = function(ex) { console.log(ex); reader.abort(); }; reader.readAsBinaryString(this.file); } } function handleFileSelect(evt) { var files = evt.target.files; var obj = new ExcelDoc(files[0]); obj.parse() console.log('obj.file:', obj.file) console.log('obj.workbook:', obj.workbook) console.log('obj:', obj) } </script> <form enctype="multipart/form-data"> <input id="upload" type=file name="files[]"> Sheets <select id="sheetSelector"> <option>Choose a sheet</option> </select> </form> <textarea class="form-control" rows=35 cols=120 id="xlx_json"></textarea> <script> document.getElementById('upload').addEventListener('change', handleFileSelect, false); </script>

about 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda