Module timers
Timers and the rendering-related scheduling of HTML: setTimeout / setInterval (with the HTML nesting clamp and background throttling), requestAnimationFrame, requestIdleCallback, and the page's visibility. Timestamps given to callbacks are on the performance.now() timeline of the page.
Exposed to: Window, Worker. Source: api/timers.widl.
Odin: import "wren:timers".
Types
handle Timer
A pending timeout or interval.
Checked by the browser on every call (lookup_Timer).
callback TimerHandler
void TimerHandler(i32 user)callback TimerHandler64
void TimerHandler64(i64 user)A timer callback with a 64-bit user value.
callback FrameRequestCallback
void FrameRequestCallback(i32 user, f64 time)An animation frame callback: time is the frame's time on the page's performance timeline.
callback IdleRequestCallback
void IdleRequestCallback(i32 user, f64 deadline, bool did_timeout)An idle callback: run before deadline (performance timeline), or late because its timeout expired.
enum VisibilityState : i32
Whether the page is shown.
| member | value | |
|---|---|---|
Visible | 0 | |
Hidden | 1 |
Functions
Timers_setTimeout
Timer Timers_setTimeout(TimerHandler callback, i32 user, f64 delay_ms = 0)setTimeout(callback, delay_ms)
Odin: timers.setTimeout.
Host: Timers_setTimeout :: proc(c: ^Call, callback: u32, user: i32, delay_ms: f64) -> u64
Timers_setInterval
Timer Timers_setInterval(TimerHandler callback, i32 user, f64 delay_ms = 0)setInterval(callback, delay_ms)
Odin: timers.setInterval.
Host: Timers_setInterval :: proc(c: ^Call, callback: u32, user: i32, delay_ms: f64) -> u64
Timers_setTimeout64
Timer Timers_setTimeout64(TimerHandler64 callback, i64 user, f64 delay_ms = 0)setTimeout with a 64-bit user value.
Odin: timers.setTimeout64.
Host: Timers_setTimeout64 :: proc(c: ^Call, callback: u32, user: i64, delay_ms: f64) -> u64
Timers_setInterval64
Timer Timers_setInterval64(TimerHandler64 callback, i64 user, f64 delay_ms = 0)setInterval with a 64-bit user value.
Odin: timers.setInterval64.
Host: Timers_setInterval64 :: proc(c: ^Call, callback: u32, user: i64, delay_ms: f64) -> u64
Timers_clear
void Timers_clear(Timer timer) raisesclearTimeout / clearInterval. Invalid_Handle when the timer already fired or was cleared.
Odin: timers.clear.
Raises: returns an Error (see web).
Host: Timers_clear :: proc(c: ^Call, timer: Api_Timer) -> Api_Error
Timers_now
f64 Timers_now()The browser's monotonic clock in ms (performance.now() is the page's own timeline).
Odin: timers.now.
Host: Timers_now :: proc(c: ^Call) -> f64
requestAnimationFrame
u64 requestAnimationFrame(FrameRequestCallback callback, i32 user = 0)requestAnimationFrame(callback): an id, 0 when too many callbacks wait (timers.max_frame_callbacks).
Host: requestAnimationFrame :: proc(c: ^Call, callback: u32, user: i32) -> u64
cancelAnimationFrame
void cancelAnimationFrame(u64 id) raisescancelAnimationFrame(id). Not_Found when it ran or was cancelled already.
Raises: returns an Error (see web).
Host: cancelAnimationFrame :: proc(c: ^Call, id: u64) -> Api_Error
requestIdleCallback
u64 requestIdleCallback(IdleRequestCallback callback, i32 user = 0, f64 timeout_ms = 0)requestIdleCallback(callback, {timeout}): an id, 0 when too many wait. timeout_ms <= 0 means none.
Host: requestIdleCallback :: proc(c: ^Call, callback: u32, user: i32, timeout_ms: f64) -> u64
cancelIdleCallback
void cancelIdleCallback(u64 id) raisescancelIdleCallback(id). Not_Found when it ran or was cancelled already.
Raises: returns an Error (see web).
Host: cancelIdleCallback :: proc(c: ^Call, id: u64) -> Api_Error
Document_visibilityState
VisibilityState Document_visibilityState()document.visibilityState
Host: Document_visibilityState :: proc(c: ^Call) -> Api_VisibilityState