diff --git a/src/core/worker.js b/src/core/worker.js index a8e0c42306233..2b6c9ac85222c 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -227,7 +227,8 @@ class WorkerMessageHandler { } let pdfStream, - cachedChunks = []; + cachedChunks = [], + loaded = 0; try { pdfStream = new PDFWorkerStream(handler); } catch (ex) { @@ -263,30 +264,22 @@ class WorkerMessageHandler { cancelXHRs = null; }); - let loaded = 0; - const flushChunks = function () { - const pdfFile = arrayBuffersToBytes(cachedChunks); - if (length && pdfFile.length !== length) { - warn("reported HTTP length is different from actual"); - } - // the data is array, instantiating directly from it - try { - pdfManagerArgs.source = pdfFile; - - newPdfManager = new LocalPdfManager(pdfManagerArgs); - pdfManagerCapability.resolve(newPdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cachedChunks = []; - }; new Promise(function (resolve, reject) { const readChunk = function ({ value, done }) { try { ensureNotTerminated(); if (done) { if (!newPdfManager) { - flushChunks(); + const pdfFile = arrayBuffersToBytes(cachedChunks); + cachedChunks = []; + + if (length && pdfFile.length !== length) { + warn("reported HTTP length is different from actual"); + } + pdfManagerArgs.source = pdfFile; + + newPdfManager = new LocalPdfManager(pdfManagerArgs); + pdfManagerCapability.resolve(newPdfManager); } cancelXHRs = null; return; @@ -854,9 +847,7 @@ class WorkerMessageHandler { } else { clearGlobalCaches(); } - if (cancelXHRs) { - cancelXHRs(new AbortException("Worker was terminated.")); - } + cancelXHRs?.(new AbortException("Worker was terminated.")); for (const task of WorkerTasks) { waitOn.push(task.finished);