UNPKG

yieldtomain

Version:

A utility function to yield to the main thread in JavaScript

42 lines (40 loc) 1.03 kB
/** * Yields execution to the main thread, allowing other tasks to be processed. * Uses scheduler.yield() if available, falling back to setTimeout. * * @example * // Basic usage * await yieldToMain(); * * @example * // Use in a loop to prevent blocking * async function processItems(items) { * for (const item of items) { * await yieldToMain(); * // Process item * } * } * * @example * // Use with heavy computation * async function heavyTask() { * for (let i = 0; i < 1000000; i++) { * if (i % 1000 === 0) await yieldToMain(); * // Compute something * } * } * * @returns {Promise<void>} A promise that resolves after yielding to the main thread */ function yieldToMain() { // @ts-ignore const scheduler = globalThis.scheduler; if (scheduler && typeof scheduler.yield === 'function') { return scheduler.yield(); } return new Promise((resolve) => { setTimeout(resolve, 0); }); } export { yieldToMain as default }; //# sourceMappingURL=yieldToMain.esm.js.map