Преглед изворни кода

use async/awit with emulated setTimeout/clearTimeout

Gildas пре 7 година
родитељ
комит
cd2742170e
1 измењених фајлова са 13 додато и 19 уклоњено
  1. 13 19
      lib/lazy/content/content-lazy-loader.js

+ 13 - 19
lib/lazy/content/content-lazy-loader.js

@@ -33,22 +33,17 @@ this.lazyLoader = this.lazyLoader || (() => {
 	function process(options) {
 		return new Promise(async resolve => {
 			let timeoutId, srcAttributeChanged;
-			const idleTimeoutId = setTimeout(() => {
+			const idleTimeoutId = await setTimeout(() => {
 				if (!srcAttributeChanged) {
 					clearTimeout(timeoutId);
 					lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve);
 				}
 			}, options.maxLazyLoadImagesIdleTime * 1.2);
-			const maxTimeoutId = await browser.runtime.sendMessage({ setTimeoutRequest: true, delay: options.maxLazyLoadImagesIdleTime * 3 });
-			const maxTimeoutCallback = message => {
-				browser.runtime.onMessage.removeListener(maxTimeoutCallback);
-				if (message.onTimeout) {
-					clearTimeout(timeoutId);
-					lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve);
-				}
-			};
-			browser.runtime.onMessage.addListener(maxTimeoutCallback);
-			const observer = new MutationObserver(mutations => {
+			const maxTimeoutId = await setTimeout(() => {
+				clearTimeout(timeoutId);
+				lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve);
+			}, options.maxLazyLoadImagesIdleTime * 3);
+			const observer = new MutationObserver(async mutations => {
 				mutations = mutations.filter(mutation => mutation.type == ATTRIBUTES_MUTATION_TYPE);
 				if (mutations.length) {
 					mutations.forEach(mutation => {
@@ -57,7 +52,7 @@ this.lazyLoader = this.lazyLoader || (() => {
 						}
 					});
 					srcAttributeChanged = true;
-					timeoutId = deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, options, resolve);
+					timeoutId = await deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, options, resolve);
 				}
 			});
 			observer.observe(document, { attributeFilter: MONITORED_ATTRIBUTES, subtree: true, childList: true, attributes: true });
@@ -65,16 +60,15 @@ this.lazyLoader = this.lazyLoader || (() => {
 		});
 	}
 
-	function deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, options, resolve) {
-		clearTimeout(timeoutId);
-		return setTimeout(() => lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve), options.maxLazyLoadImagesIdleTime);
+	async function deferLazyLoadEnd(timeoutId, maxTimeoutId, idleTimeoutId, observer, options, resolve) {
+		await clearTimeout(timeoutId);
+		return await setTimeout(async () => await lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve), options.maxLazyLoadImagesIdleTime);
 	}
 
-	function lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve) {
-		browser.runtime.sendMessage({ clearTimeout: true, id: maxTimeoutId });
-		clearTimeout(idleTimeoutId);
+	async function lazyLoadEnd(maxTimeoutId, idleTimeoutId, observer, options, resolve) {
+		await clearTimeout(idleTimeoutId);
 		injectScript(SCRIPT_AFTER_PATH);
-		setTimeout(resolve, 100);
+		await setTimeout(resolve, 100);
 		observer.disconnect();
 	}