Wren a web browser where WebAssembly runs everything, JavaScript included

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.

membervalue
Visible0
Hidden1

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) raises

clearTimeout / 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) raises

cancelAnimationFrame(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) raises

cancelIdleCallback(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

Edit this page on GitHub