Skip to content

Instantly share code, notes, and snippets.

@ynsem
Created November 9, 2022 10:26
Show Gist options
  • Select an option

  • Save ynsem/b76ff07c20293a402c6eae67329fe127 to your computer and use it in GitHub Desktop.

Select an option

Save ynsem/b76ff07c20293a402c6eae67329fe127 to your computer and use it in GitHub Desktop.
Example of my code. Worker for XLSX and func for it
import XLSX from 'xlsx';
const getWorkbook = (fileListItem, index) =>
new Promise(resolve => {
const reader = new FileReader();
reader.readAsBinaryString(fileListItem.file);
reader.onload = () => {
const wb = XLSX.read(reader.result, { sheetRows: 50, type: 'binary' });
console.log(wb)
resolve({ index, wb, wbName: fileListItem.file.name });
};
reader.onerror = error => {
console.log('Error: ', error);
};
});
self.onmessage = ({ data }) => {
getWorkbook(data.item, data.index)
.then(result => {
if (typeof result.index !== 'undefined') {
self.postMessage({ index: result.index, wb: result.wb });
}
})
}
-----------------------------------------
useEffect(() => {
fileListItems.map((item, index) => {
if (!item.workbook) {
const worker = new Worker(new URL('./worker.js', import.meta.url));
worker.postMessage({item, index});
worker.onmessage = ({ data }) => setFileWorkbook(data.index, data.wb);
}
});
}, [fileListItems]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment