跳到主要内容

IdleTimer

Defined in: packages/utils/src/@browser/IdleTimer.ts:51

浏览器空闲检测。

监听 document 上的鼠标 / 键盘 / 触摸 / 滚轮 / 可见性变化等事件(capture + passive)。 每次事件把状态推回「不空闲」并重置计时;静默满 timeout 毫秒后推「空闲」。

依赖全局 document,只能在浏览器环境使用。用完必须 IdleTimer.destroy, 否则事件监听器会一直挂在 document 上。

Example​

const timer = new IdleTimer({ timeout: 5000 });
timer.idle$.subscribe(idle => console.log(idle));
timer.start();
// ...
timer.destroy();

Constructors​

Constructor​

new IdleTimer(options?): IdleTimer;

Defined in: packages/utils/src/@browser/IdleTimer.ts:71

Parameters​

ParameterTypeDescription
options?IdleTimerOptions见 IdleTimerOptions;不传则 timeout 为 2000

Returns​

IdleTimer

Throws​

TypeError options.timeout 不是非负安全整数(不会静默回退默认值)

Properties​

idle$​

idle$: Observable<boolean>;

Defined in: packages/utils/src/@browser/IdleTimer.ts:65

空闲状态流。

行为化(订阅即拿到当前值,初始为 false),且已 distinctUntilChanged, 只在真正翻转时发射。IdleTimer.destroy 后该流 complete,不再发射。

Methods​

destroy()​

destroy(): void;

Defined in: packages/utils/src/@browser/IdleTimer.ts:118

释放全部资源:摘监听、清计时器、complete IdleTimer.idle$。

幂等,重复调用是安全的 no-op。不可逆——此后调用 IdleTimer.start / IdleTimer.stop 会抛错,需要继续检测请新建实例。

Returns​

void


start()​

start(): void;

Defined in: packages/utils/src/@browser/IdleTimer.ts:89

开始检测:绑定事件监听并立即把状态置为「不空闲」、重新起算 timeout。

幂等——重复调用不会重复绑定监听器,只是重置计时。

Returns​

void

Throws​

Error 实例已 IdleTimer.destroy;destroy 后的实例不可复活,请新建


stop()​

stop(): void;

Defined in: packages/utils/src/@browser/IdleTimer.ts:106

暂停检测:摘掉事件监听并清掉计时器。

不会改变 IdleTimer.idle$ 的当前值,也不会 complete 它; 之后可以再 IdleTimer.start 恢复。幂等。

Returns​

void

Throws​

Error 实例已 IdleTimer.destroy