@askrjs/askr/fx
Exports from the declarations published in @askrjs/askr. Signatures reflect the published artifact.
Exports
This entrypoint publishes 18 exports. Use the anchored symbol rows for direct links. Type-only exports are labeled separately from runtime values.
debouncetype
debounce: <T extends AnyFn>(fn: T, ms: number, options?: DebounceOptions) => T & { cancel(): void; }Debounce — delay execution, coalesce rapid calls Useful for: text input, resize, autosave
```ts
const save = debounce((text) => api.save(text), 500);
input.addEventListener('input', (e) => save(e.target.value));
save.cancel(); // stop any pending execution
```debounceEventtype
debounceEvent: (ms: number, handler: EventListener, options?: { leading?: boolean; trailing?: boolean; }) => EventListener & { cancel(): void; flush(): void; }Wrap an event handler so rapid events are coalesced and delayed by `ms`.
DebounceOptionstype
DebounceOptions: anyOptions for {@link debounce}.
leading- leading?: boolean;
trailing- trailing?: boolean;
defertype
defer: (fn: () => void) => voidDefer — schedule on microtask queue Useful for: run-after-current-stack logic More reliable than setTimeout(..., 0)
```ts
defer(() => update()); // runs after current stack, before next macrotask
```idletype
idle: (fn: () => void, options?: { timeout?: number; }) => voidIdle — schedule low-priority work Useful for: background prep, non-urgent updates Falls back to setTimeout if requestIdleCallback unavailable
```ts
idle(() => prefetchData());
```oncetype
once: <T extends AnyFn>(fn: T) => TOnce — guard against double execution Useful for: init logic, event safety
```ts
const init = once(setup);
init(); // runs
init(); // does nothing
init(); // does nothing
```raftype
raf: <T extends AnyFn>(fn: T) => TRAF — coalesce multiple updates into single frame Useful for: animation, layout work, render updates
```ts
const update = raf(render);
update(); // schedules on next frame
update(); // same frame, no duplicate
```rafEventtype
rafEvent: (handler: EventListener) => EventListener & { cancel(): void; }Wrap an event handler so it runs at most once per animation frame, using the latest event.
retrytype
retry: <T>(fn: () => Promise<T>, options?: RetryOptions) => Promise<T>Retry — attempt function with backoff Useful for: network calls, transient failures
```ts
const data = await retry(() => fetch(url), {
maxAttempts: 3,
delayMs: 100,
});
```RetryOptionstype
RetryOptions: anyOptions for {@link retry}.
maxAttempts- maxAttempts?: number;
delayMs- delayMs?: number;
backoff- backoff?: (attemptIndex: number) => number;
scheduleEventHandlertype
scheduleEventHandler: (handler: EventListener) => EventListenerscheduleIdletype
scheduleIdle: (fn: () => void, options?: { timeout?: number; }) => CancelFnSchedule `fn` during browser idle time, auto-cancelling on component cleanup.
scheduleRetrytype
scheduleRetry: <T>(fn: () => Promise<T>, options?: RetryOptions$1) => { cancel(): void; }Run `fn`, retrying with backoff on failure, auto-cancelling on component cleanup.
scheduleTimeouttype
scheduleTimeout: (ms: number, fn: () => void) => CancelFnSchedule `fn` after `ms`, auto-cancelling on component cleanup; returns a cancel function.
throttletype
throttle: <T extends AnyFn>(fn: T, ms: number, options?: ThrottleOptions) => T & { cancel(): void; }Throttle — rate-limit execution, keep first/last Useful for: scroll, mouse move, high-frequency events
```ts
const handleScroll = throttle(updateUI, 100);
window.addEventListener('scroll', handleScroll);
handleScroll.cancel();
```throttleEventtype
throttleEvent: (ms: number, handler: EventListener, options?: { leading?: boolean; trailing?: boolean; }) => EventListener & { cancel(): void; }Wrap an event handler so it runs at most once per `ms` interval.
ThrottleOptionstype
ThrottleOptions: anyOptions for {@link throttle}.
leading- leading?: boolean;
trailing- trailing?: boolean;
timeouttype
timeout: (ms: number) => Promise<void>Timeout — Promise-based delay Useful for: readable async code, waiting between retries
```ts
await timeout(300);
console.log('300ms later');
```