|
@@ -163,7 +163,6 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
class BatchRequest {
|
|
class BatchRequest {
|
|
|
constructor() {
|
|
constructor() {
|
|
|
this.requests = new Map();
|
|
this.requests = new Map();
|
|
|
- this.MAX_REQUESTS = 128;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async addURL(resourceURL) {
|
|
async addURL(resourceURL) {
|
|
@@ -184,26 +183,18 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
async run(onloadListener, options) {
|
|
async run(onloadListener, options) {
|
|
|
const resourceURLs = Array.from(this.requests.keys());
|
|
const resourceURLs = Array.from(this.requests.keys());
|
|
|
let indexResource = 0;
|
|
let indexResource = 0;
|
|
|
- for (let requests = 0; requests < this.MAX_REQUESTS; requests++) {
|
|
|
|
|
- await retrieveResourceContent(this.requests);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- async function retrieveResourceContent(requests) {
|
|
|
|
|
- const resourceURL = resourceURLs[indexResource];
|
|
|
|
|
- if (resourceURL) {
|
|
|
|
|
- const resourceRequests = requests.get(resourceURL);
|
|
|
|
|
- indexResource = indexResource + 1;
|
|
|
|
|
- try {
|
|
|
|
|
- const dataURI = await Download.getContent(resourceURL, { asDataURI: true, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
|
|
- resourceRequests.forEach(resourceRequest => resourceRequest.resolve(dataURI));
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- resourceRequests.forEach(resourceRequest => resourceRequest.reject(error));
|
|
|
|
|
- }
|
|
|
|
|
- requests.delete(resourceURL);
|
|
|
|
|
- onloadListener({ index: indexResource + 1, max: resourceURLs.length, url: resourceURL });
|
|
|
|
|
- await retrieveResourceContent(requests);
|
|
|
|
|
|
|
+ return Promise.all(resourceURLs.map(async resourceURL => {
|
|
|
|
|
+ const resourceRequests = this.requests.get(resourceURL);
|
|
|
|
|
+ indexResource = indexResource + 1;
|
|
|
|
|
+ try {
|
|
|
|
|
+ const dataURI = await Download.getContent(resourceURL, { asDataURI: true, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
|
|
+ resourceRequests.forEach(resourceRequest => resourceRequest.resolve(dataURI));
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ resourceRequests.forEach(resourceRequest => resourceRequest.reject(error));
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ this.requests.delete(resourceURL);
|
|
|
|
|
+ onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
|
|
|
|
|
+ }));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|