Skip to content

Commit 17d3ea4

Browse files
SkyZeroZxthePunderWoman
authored andcommitted
feat(core): add IdleRequestOptions support to IdleService
IdleService now accepts IdleRequestOptions, enabling configuration of requestIdleCallback behavior in compatible environments.
1 parent 1f057af commit 17d3ea4

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

goldens/public-api/core/index.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ export interface HostListenerDecorator {
846846
// @public
847847
export interface IdleService {
848848
cancelOnIdle(id: number): void;
849-
requestOnIdle(callback: (deadline?: IdleDeadline) => void): number;
849+
requestOnIdle(callback: (deadline?: IdleDeadline) => void, options?: IdleRequestOptions): number;
850850
}
851851

852852
// @public

packages/core/src/defer/idle_service.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@ import {makeEnvironmentProviders} from '../di/provider_collection';
1818
* Note: we wrap the `requestIdleCallback` call into a function, so that it can be
1919
* overridden/mocked in test environment and picked up by the runtime code.
2020
*/
21-
const _requestIdleCallback = () =>
22-
(typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : setTimeout).bind(globalThis);
21+
const _requestIdleCallback = (): ((
22+
callback: (deadline?: IdleDeadline) => void,
23+
options?: IdleRequestOptions,
24+
) => number) =>
25+
typeof requestIdleCallback !== 'undefined'
26+
? requestIdleCallback.bind(globalThis)
27+
: (callback) => setTimeout(callback) as unknown as number;
28+
2329
const _cancelIdleCallback = () =>
2430
(typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
2531

@@ -34,7 +40,7 @@ export interface IdleService {
3440
*
3541
* @returns an id which allows the scheduled callback to be cancelled before it executes.
3642
*/
37-
requestOnIdle(callback: (deadline?: IdleDeadline) => void): number;
43+
requestOnIdle(callback: (deadline?: IdleDeadline) => void, options?: IdleRequestOptions): number;
3844

3945
/**
4046
* Cancel a previously scheduled callback using the id associated with it.
@@ -74,8 +80,8 @@ class RequestIdleCallbackService implements IdleService {
7480
private readonly requestIdleCallback = _requestIdleCallback();
7581
private readonly cancelIdleCallback = _cancelIdleCallback();
7682

77-
requestOnIdle(callback: (deadline?: IdleDeadline) => void): number {
78-
return this.requestIdleCallback(callback) as unknown as number;
83+
requestOnIdle(callback: (deadline?: IdleDeadline) => void, options?: IdleRequestOptions): number {
84+
return this.requestIdleCallback(callback, options);
7985
}
8086

8187
cancelOnIdle(id: number): void {

0 commit comments

Comments
 (0)