Skip to content

Commit 02f487a

Browse files
committed
add queueMicrotask polyfill
1 parent b4c82b6 commit 02f487a

File tree

5 files changed

+23
-0
lines changed

5 files changed

+23
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
(function () {
2+
if (global.queueMicrotask) return;
3+
var promise;
4+
global.queueMicrotask = function queueMicrotask(cb) {
5+
return (promise || (promise = Promise.resolve()))
6+
.then(cb)
7+
.catch(err => setTimeout(() => { throw err }, 0));
8+
}
9+
})();

Resources/ReactUnity/polyfills/queue-microtask.js.meta

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/Scripting/EngineCapabilities.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ public enum EngineCapabilities
1616
Navigator = 128,
1717
Encoding = 256,
1818
AbortController = 512,
19+
QueueMicrotask = 1024,
1920
}
2021
}

Runtime/Scripting/QuickJS/QuickJSEngine.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class QuickJSEngine : IJavaScriptEngine
2828
| EngineCapabilities.Console
2929
| EngineCapabilities.Base64
3030
| EngineCapabilities.AbortController
31+
| EngineCapabilities.QueueMicrotask
3132
#endif
3233
| EngineCapabilities.None;
3334

Runtime/Scripting/ScriptContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ void CreateConsole(IJavaScriptEngine engine)
202202
static void CreatePolyfills(IJavaScriptEngine engine)
203203
{
204204
// Load essential polyfills
205+
if (!engine.Capabilities.HasFlag(EngineCapabilities.QueueMicrotask))
206+
engine.Execute(ResourcesHelper.GetPolyfill("queue-microtask"), "ReactUnity/polyfills/queue-microtask");
205207

206208
if (!engine.Capabilities.HasFlag(EngineCapabilities.Base64))
207209
engine.Execute(ResourcesHelper.GetPolyfill("base64"), "ReactUnity/polyfills/base64");

0 commit comments

Comments
 (0)