mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-14 18:12:09 +08:00
28 lines
673 B
TypeScript
28 lines
673 B
TypeScript
import { Trace } from '../trace';
|
|
import { dispatchToMainThread } from './mainthread-helper';
|
|
|
|
let scheduled = false;
|
|
let macroTaskQueue: Array<() => void> = [];
|
|
|
|
function drainMacrotaskQueue() {
|
|
const currentQueue = macroTaskQueue;
|
|
macroTaskQueue = [];
|
|
scheduled = false;
|
|
currentQueue.forEach((task) => {
|
|
try {
|
|
task();
|
|
} catch (err) {
|
|
const msg = err ? err.stack || err : err;
|
|
Trace.write(`Error in macroTask: ${msg}`, Trace.categories.Error, Trace.messageType.error);
|
|
}
|
|
});
|
|
}
|
|
|
|
export function queueMacrotask(task: () => void): void {
|
|
macroTaskQueue.push(task);
|
|
if (!scheduled) {
|
|
scheduled = true;
|
|
dispatchToMainThread(drainMacrotaskQueue);
|
|
}
|
|
}
|