package server-reason-react

  1. Overview
  2. Docs
Rendering React components on the server natively

Install

dune-project
 Dependency

Authors

Maintainers

Sources

server-reason-react-0.5.1.tbz
sha256=3972f64a3ec22b120b40137f74e7862629b2164e5bbf8b85489d4c7b8bc13288
sha512=24a52537c091c4b278ea5e468aa6786378f8b559ed2128e824b6f84f26c283856a30e7ef01aab6101087bd53b9bdc2ecd8152c00db10bccff67221b9c67318a0

doc/src/server-reason-react.js/Js_promise.ml.html

Source file Js_promise.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
type +'a t = 'a Lwt.t
type error = exn

let make (fn : resolve:('a -> unit) -> reject:(exn -> unit) -> unit) : 'a t =
  let promise, resolver = Lwt.task () in
  let resolve value = Lwt.wakeup_later resolver value in
  let reject exn = Lwt.wakeup_later_exn resolver exn in
  fn ~resolve ~reject;
  promise

let resolve = Lwt.return
let reject = Lwt.fail
let all (promises : 'a t array) : 'a array t = Lwt.map Stdlib.Array.of_list (Lwt.all (Stdlib.Array.to_list promises))

let all2 (a, b) =
  let%lwt res_a = a in
  let%lwt res_b = b in
  Lwt.return (res_a, res_b)

let all3 (a, b, c) =
  let%lwt res_a = a in
  let%lwt res_b = b in
  let%lwt res_c = c in
  Lwt.return (res_a, res_b, res_c)

let all4 (a, b, c, d) =
  let%lwt res_a = a in
  let%lwt res_b = b in
  let%lwt res_c = c in
  let%lwt res_d = d in
  Lwt.return (res_a, res_b, res_c, res_d)

let all5 (a, b, c, d, e) =
  let%lwt res_a = a in
  let%lwt res_b = b in
  let%lwt res_c = c in
  let%lwt res_d = d in
  let%lwt res_e = e in
  Lwt.return (res_a, res_b, res_c, res_d, res_e)

let all6 (a, b, c, d, e, f) =
  let%lwt res_a = a in
  let%lwt res_b = b in
  let%lwt res_c = c in
  let%lwt res_d = d in
  let%lwt res_e = e in
  let%lwt res_f = f in
  Lwt.return (res_a, res_b, res_c, res_d, res_e, res_f)

(* Promise.race([]) returns a forever-pending promise in JS. *)
let race (promises : 'a t array) : 'a t =
  if Stdlib.Array.length promises = 0 then Stdlib.fst (Lwt.task ()) else Lwt.pick (Stdlib.Array.to_list promises)

let then_ p fn = Lwt.bind fn p
let catch (handler : exn -> 'a t) (promise : 'a t) : 'a t = Lwt.catch (fun () -> promise) handler