mirror of
				https://github.com/NativeScript/NativeScript.git
				synced 2025-11-04 12:58:38 +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);
 | 
						|
	}
 | 
						|
}
 |