Files
LNXSDK/Kha/Backends/HTML5/kha/js/Microtask.hx
2026-05-21 23:40:20 -07:00

29 lines
605 B
Haxe

package kha.js;
import js.html.MessageChannel;
class Microtask {
static var messageChannel: MessageChannel;
static final callbacks: Array<() -> Void> = [];
static function init(): Void {
if (messageChannel != null) {
return;
}
messageChannel = new MessageChannel();
messageChannel.port1.onmessage = _ -> {
final copy = callbacks.copy();
callbacks.resize(0);
for (callback in copy) {
callback();
}
};
}
public static function queueMicrotask(callback: () -> Void): Void {
init();
callbacks.push(callback);
messageChannel.port2.postMessage(js.Lib.undefined);
}
}