forked from LeenkxTeam/LNXSDK
29 lines
605 B
Haxe
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);
|
|
}
|
|
}
|