mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
28 lines
681 B
JavaScript
28 lines
681 B
JavaScript
import { supportsIdleCallback } from "./supports.js";
|
|
//#region src/dom/idle-callback.ts
|
|
/**
|
|
* Request an idle callback with cleanup. Falls back to setTimeout for Safari.
|
|
*
|
|
* @example
|
|
* ```ts
|
|
* const cancel = idleCallback(doWork, { timeout: 1000 });
|
|
* cancel(); // Cancel if needed
|
|
* ```
|
|
*/
|
|
function idleCallback(callback, options) {
|
|
if (supportsIdleCallback()) {
|
|
const id = requestIdleCallback(callback, options);
|
|
return () => cancelIdleCallback(id);
|
|
}
|
|
const id = setTimeout(() => {
|
|
callback({
|
|
didTimeout: false,
|
|
timeRemaining: () => 50
|
|
});
|
|
}, 1);
|
|
return () => clearTimeout(id);
|
|
}
|
|
//#endregion
|
|
export { idleCallback };
|
|
|
|
//# sourceMappingURL=idle-callback.js.map
|