Browse Source

removed limit on parallel requests...

Gildas 7 years ago
parent
commit
d96c99b9eb
1 changed files with 11 additions and 20 deletions
  1. 11 20
      lib/single-file/single-file-core.js

+ 11 - 20
lib/single-file/single-file-core.js

@@ -163,7 +163,6 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 	class BatchRequest {
 		constructor() {
 			this.requests = new Map();
-			this.MAX_REQUESTS = 128;
 		}
 
 		async addURL(resourceURL) {
@@ -184,26 +183,18 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 		async run(onloadListener, options) {
 			const resourceURLs = Array.from(this.requests.keys());
 			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 });
+			}));
 		}
 	}