Adding extra code to ensure more than one ready timer runs at a time. Exposed IgniteCallback to window.
This commit is contained in:
		| @@ -523,21 +523,25 @@ class IgniteRenderingContext { | |||||||
|         IgniteRenderingContext.ReadyCallbacks.push(callback); |         IgniteRenderingContext.ReadyCallbacks.push(callback); | ||||||
|  |  | ||||||
|         //Clear the existing timer if there is one. |         //Clear the existing timer if there is one. | ||||||
|         if (IgniteRenderingContext.ReadyTimer) { |         if (IgniteRenderingContext.ReadyTimer && !IgniteRenderingContext.ReadyTimerRunning) { | ||||||
|             clearTimeout(IgniteRenderingContext.ReadyTimer); |             clearTimeout(IgniteRenderingContext.ReadyTimer); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         //Set a new timeout, it will only run once all elements are ready because |         //Set a new timeout, it will only run once all elements are ready because | ||||||
|         //of the way single threaded timers work. |         //of the way single threaded timers work. | ||||||
|  |         if (!IgniteRenderingContext.ReadyTimerRunning) { | ||||||
|             IgniteRenderingContext.ReadyTimer = setTimeout(async () => { |             IgniteRenderingContext.ReadyTimer = setTimeout(async () => { | ||||||
|             for (var i = 0; i < IgniteRenderingContext.ReadyCallbacks.length; i++) { |                 IgniteRenderingContext.ReadyTimerRunning = true; | ||||||
|                 IgniteRenderingContext.ReadyCallbacks[i].invoke(); |                 while (IgniteRenderingContext.ReadyCallbacks.length > 0) { | ||||||
|  |                     await IgniteRenderingContext.ReadyCallbacks.shift().invoke(); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 IgniteRenderingContext.ReadyCallbacks = []; |                 IgniteRenderingContext.ReadyCallbacks = []; | ||||||
|                 IgniteRenderingContext.ReadyTimer = null; |                 IgniteRenderingContext.ReadyTimer = null; | ||||||
|  |                 IgniteRenderingContext.ReadyTimerRunning = false; | ||||||
|             }, 1); |             }, 1); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     static get rendering() { |     static get rendering() { | ||||||
|         if (IgniteRenderingContext.RenderCount && IgniteRenderingContext.RenderCount > 0) { |         if (IgniteRenderingContext.RenderCount && IgniteRenderingContext.RenderCount > 0) { | ||||||
| @@ -550,6 +554,7 @@ class IgniteRenderingContext { | |||||||
|  |  | ||||||
| window.IgniteRenderingContext = IgniteRenderingContext; | window.IgniteRenderingContext = IgniteRenderingContext; | ||||||
| window.IgniteObject = IgniteObject; | window.IgniteObject = IgniteObject; | ||||||
|  | window.IgniteCallback = IgniteCallback; | ||||||
|  |  | ||||||
| export { | export { | ||||||
|     IgniteProperty, |     IgniteProperty, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user