Просмотр исходного кода

re-call cancelAnimationFrame only if needed

Gildas 7 лет назад
Родитель
Сommit
cac1d4185a
1 измененных файлов с 5 добавлено и 4 удалено
  1. 5 4
      lib/hooks/hooks-frame.js

+ 5 - 4
lib/hooks/hooks-frame.js

@@ -105,7 +105,6 @@ this.hooksFrame = this.hooksFrame || (() => {
 			});
 			if (pendingRequestAnimationFrameCalls.size) {
 				Array.from(pendingRequestAnimationFrameCalls).forEach(([id, callback]) => {
-					pendingRequestAnimationFrameCalls.delete(id);
 					cancelAnimationFrame(id);
 					callback();
 				});
@@ -155,9 +154,11 @@ this.hooksFrame = this.hooksFrame || (() => {
 		window.requestAnimationFrame.toString = function () { return "requestAnimationFrame() { [native code] }"; };
 
 		window.cancelAnimationFrame = function (id) {
-			pendingRequestAnimationFrameCalls.delete(id);
-			if (loadDeferredImages) {
-				return clearTimeout(id);
+			const pendingCallDeleted = pendingRequestAnimationFrameCalls.delete(id);
+			if (loadDeferredImages || !pendingCallDeleted) {
+				if (loadDeferredImages) {
+					return clearTimeout(id);
+				}
 			} else {
 				return cancelAnimationFrame(id);
 			}