Module Js_global

module Js_global: sig .. end
Contains functions available in the global scope (window in a browser context)

type intervalId 
Identify an interval started by Js_global.setInterval
type timeoutId 
Identify timeout started by Js_global.setTimeout
val clearInterval : intervalId -> unit
Clear an interval started by Js_global.setInterval
See also MDN
 
(* API for a somewhat aggressive snoozing alarm clock *)

let interval = ref Js.Nullable.null

let remind () =
  Js.log "Wake Up!";
  IO.punchSleepyGuy ()
  
let snooze mins =
  interval := Js.Nullable.return (Js.Global.setInterval remind (mins * 60 * 1000))
  
let cancel () =
  Js.Nullable.iter !interval (fun[@bs] intervalId -> Js.Global.clearInterval intervalId)
val clearTimeout : timeoutId -> unit
Clear a timeout started by Js_global.setTimeout
See also MDN
 
(* A simple model of a code monkey's brain *)

let timer = ref Js.Nullable.null

let work () =
  IO.closeHackerNewsTab ()

let procrastinate mins =
  Js.Nullable.iter !timer (fun[@bs] timer -> Js.Global.clearTimeout timer);
  timer := Js.Nullable.return (Js.Global.setTimeout work (mins * 60 * 1000))
val setInterval : (unit -> unit) -> int -> intervalId
Repeatedly executes a callback with a specified interval (in milliseconds) between calls

Return an Js_global.intervalId that can be passed to Js_global.clearInterval to cancel the timeout

See also MDN
 
(* Will count up and print the count to the console every second *)

let count = ref 0

let tick () =
  count := !count + 1; Js.log (string_of_int !count)

let _ =
  Js.Global.setInterval tick 1000
val setIntervalFloat : (unit -> unit) -> float -> intervalId
Repeatedly executes a callback with a specified interval (in milliseconds) between calls

Return an Js_global.intervalId that can be passed to Js_global.clearInterval to cancel the timeout

See also MDN
 
(* Will count up and print the count to the console every second *)

let count = ref 0

let tick () =
  count := !count + 1; Js.log (string_of_int !count)

let _ =
  Js.Global.setIntervalFloat tick 1000.0
val setTimeout : (unit -> unit) -> int -> timeoutId
Execute a callback after a specified delay (in milliseconds)

returns a Js_global.timeoutId that can be passed to Js_global.clearTimeout to cancel the timeout

See also MDN
 
(* Prints "Timed out!" in the console after one second *)

let message = "Timed out!"

let _ =
  Js.Global.setTimeout (fun () -> Js.log message) 1000
val setTimeoutFloat : (unit -> unit) -> float -> timeoutId
Execute a callback after a specified delay (in milliseconds)

returns a Js_global.timeoutId that can be passed to Js_global.clearTimeout to cancel the timeout

See also MDN
 
(* Prints "Timed out!" in the console after one second *)

let message = "Timed out!"

let _ =
  Js.Global.setTimeoutFloat (fun () -> Js.log message) 1000.0
val encodeURI : string -> string
URL-encodes a string.
See also MDN
val decodeURI : string -> string
Decodes a URL-enmcoded string produced by encodeURI
See also MDN
val encodeURIComponent : string -> string
URL-encodes a string, including characters with special meaning in a URI.
See also MDN
val decodeURIComponent : string -> string
Decodes a URL-enmcoded string produced by encodeURIComponent
See also MDN