timeout-flow
Version:
Fluent, composable, pauseable JavaScript timers and time control flows — plus RAF utilities for frame-based logic.
20 lines (19 loc) • 924 B
TypeScript
/**
* Waits for a condition to return truthy, polling each frame.
*
* Timing model:
* - Evaluates `condition()` once per animation frame until it returns truthy.
* - If `timeout` is provided, timeout is measured in RAF time (frame timestamps).
*
* @param {Function} condition - Function returning truthy when complete
* @param {Object} [options]
* @param {string|number} [options.timeout] - Optional max time to wait
* @param {AbortSignal} [options.signal] - Optional AbortSignal to cancel waiting
* @param {boolean} [options.immediate=false] - If true, evaluate condition immediately before first frame
* @returns {Promise<void>} Resolves when condition is met, rejects on timeout/abort
*/
export function waitForRaf(condition: Function, { timeout, signal, immediate }?: {
timeout?: string | number | undefined;
signal?: AbortSignal | undefined;
immediate?: boolean | undefined;
}): Promise<void>;