useTimeout
A thin wrapper around useTimeoutFn that exposes a ReadonlyObservable<boolean> (ready$) that flips to true when the timeout completes.
Ready: false
Ready becomes true after 1 second.
import { import useTimeout
useTimeout } from "@usels/web";
const const ready$: any
ready$ = import useTimeout
useTimeout(1000);// ready$.get() === false while waiting// ready$.get() === true after 1000msWith callback
Section titled “With callback”import { import useTimeout
useTimeout } from "@usels/web";
import useTimeout
useTimeout(500, { callback: () => any
callback: () => any
console.any
log("done!"),});With stop/start controls
Section titled “With stop/start controls”import { import useTimeout
useTimeout } from "@usels/web";
const { const ready$: any
ready$, const isPending$: any
isPending$, const stop: any
stop, const start: any
start } = import useTimeout
useTimeout(1000, { controls: boolean
controls: true });
const stop: any
stop(); // cancel the pending timeoutconst start: any
start(); // restart the timerManual start (immediate: false)
Section titled “Manual start (immediate: false)”import { import useTimeout
useTimeout } from "@usels/web";
const { const ready$: any
ready$, const start: any
start } = import useTimeout
useTimeout(1000, { controls: boolean
controls: true, immediate: boolean
immediate: false,});
// call start() when you're readyconst start: any
start();ready$ vs isPending$
Section titled “ready$ vs isPending$”| Observable | Meaning |
|---|---|
ready$ | true when timeout has fired |
isPending$ (controls only) | true while timeout is still waiting |
They are inverses: ready$ = !isPending$.
Reactive interval
Section titled “Reactive interval”Pass an Observable<number> as the first argument and useTimeoutFn will read the latest value each time start() is called.
Type Declarations
Section titled “Type Declarations”export interface UseTimeoutOptions<Controls extends boolean = false> { controls?: Controls; callback?: Fn; immediate?: boolean;}export declare function useTimeout(interval?: MaybeObservable<number>, options?: UseTimeoutOptions<false>): ReadonlyObservable<boolean>;export declare function useTimeout(interval: MaybeObservable<number>, options: UseTimeoutOptions<true>): { ready$: ReadonlyObservable<boolean>;} & Stoppable;Source
Section titled “Source”Contributors
Section titled “Contributors”- tigerwest
Changelog
Section titled “Changelog”a7392ab2026-03-06 - feat(core,browser): add sync strategy hooks (tigerwest)