Итак, я пытаюсь преобразовать большой двоичный объект в настоящий файл. Чтобы уменьшить нагрузку на поток, я создал файл worker. js, который прослушивает событие, затем помещает данные события в массив и, наконец, преобразует их в большой двоичный объект.
function download() {
setGotFile(false);
const dwn = function (event) {
let stream = event.data.stream();
console.log(stream);
const fileStream = streamSaver.createWriteStream(fileNameRef.current);
console.log(fileStream);
stream.pipeTo(fileStream);
stream = null;
}
worker.postMessage("download");
worker.addEventListener("message", dwn,false)
}
Функция загрузки отлично работает для первый раз. Но затем, если срабатывает, событие складывается, что заставляет его загружать файл несколько раз.
Рабочий. js файл: -
let array = [];
self.addEventListener("message", event => {
console.log(array);
if (event.data === "download") {
const blob = new Blob(array);
self.postMessage(blob);
array = [];
} else {
array.push(event.data);
}
})