Skip to content

Commit c44e231

Browse files
committed
Added timers/promises. Resolves #21
1 parent 7dbe2f3 commit c44e231

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
kind: Added
2+
body: Timers.Promises from NodeJS 16
3+
time: 2023-12-11T03:45:12.916076+11:00
4+
custom:
5+
Github Issue: "21"

lib/js/src/Timers.bs.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/test/atomic/Timers.test.bs.js

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Timers.res

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,13 @@ external setInterval: (unit => unit, int) => Timeout.t = "setInterval"
2121
@val external clearImmediate: Immediate.t => unit = "clearImmediate"
2222
@val external clearTimeout: Timeout.t => unit = "clearTimeout"
2323
@val external clearInterval: Timeout.t => unit = "clearInterval"
24+
25+
module Promises = {
26+
@module("node:timers/promises")
27+
external setTimeout: int => Js.Promise.t<unit> = "setTimeout"
28+
@module("node:timers/promises")
29+
external setImmediate: 'a => Js.Promise.t<'a> = "setImmediate"
30+
// setInterval is not a promise, it's an async iterator
31+
// @module("node:timers/promises")
32+
// external setInterval: (int, 'a) => Js.Promise.t<'a> = "setTimeout"
33+
}

test/atomic/Timers.test.res

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
open Zora
2+
3+
zora("Timers (promises)", async t => {
4+
t->test("setTimeout", async t => {
5+
let () = await Timers.Promises.setTimeout(100)
6+
t->ok(true, "")
7+
})
8+
t->test("setImmediate", async t => {
9+
let yes = await Timers.Promises.setImmediate("yes")
10+
t->equal(yes, "yes", "")
11+
})
12+
})

0 commit comments

Comments
 (0)