|
1 | 1 | type t<+'a> = promise<'a>
|
2 | 2 | type error
|
3 | 3 |
|
| 4 | +@tag("status") |
| 5 | +type settledResult<+'a> = |
| 6 | + | @as("fulfilled") Fulfilled({value: 'a}) | @as("rejected") Rejected({reason: unknown}) |
| 7 | + |
4 | 8 | /** Type-safe t-first then */
|
5 | 9 | let then: (promise<'a>, 'a => promise<'b>) => promise<'b> = %raw(`
|
6 | 10 | function(p, cont) {
|
@@ -52,6 +56,53 @@ external all6: (
|
52 | 56 | (promise<'a0>, promise<'a1>, promise<'a2>, promise<'a3>, promise<'a4>, promise<'a5>)
|
53 | 57 | ) => promise<('a0, 'a1, 'a2, 'a3, 'a4, 'a5)> = "all"
|
54 | 58 |
|
| 59 | +@val @scope("Promise") |
| 60 | +external allSettled: array<promise<'a>> => promise<array<settledResult<'a>>> = "allSettled" |
| 61 | + |
| 62 | +@val @scope("Promise") |
| 63 | +external allSettled2: ((promise<'a0>, promise<'a1>)) => promise<( |
| 64 | + settledResult<'a0>, |
| 65 | + settledResult<'a1>, |
| 66 | +)> = "allSettled" |
| 67 | + |
| 68 | +@val @scope("Promise") |
| 69 | +external allSettled3: ((promise<'a0>, promise<'a1>, promise<'a2>)) => promise<( |
| 70 | + settledResult<'a0>, |
| 71 | + settledResult<'a1>, |
| 72 | + settledResult<'a2>, |
| 73 | +)> = "allSettled" |
| 74 | + |
| 75 | +@val @scope("Promise") |
| 76 | +external allSettled4: ((promise<'a0>, promise<'a1>, promise<'a2>, promise<'a3>)) => promise<( |
| 77 | + settledResult<'a0>, |
| 78 | + settledResult<'a1>, |
| 79 | + settledResult<'a2>, |
| 80 | + settledResult<'a3>, |
| 81 | +)> = "allSettled" |
| 82 | + |
| 83 | +@val @scope("Promise") |
| 84 | +external allSettled5: ( |
| 85 | + (promise<'a0>, promise<'a1>, promise<'a2>, promise<'a3>, promise<'a4>) |
| 86 | +) => promise<( |
| 87 | + settledResult<'a0>, |
| 88 | + settledResult<'a1>, |
| 89 | + settledResult<'a2>, |
| 90 | + settledResult<'a3>, |
| 91 | + settledResult<'a4>, |
| 92 | +)> = "allSettled" |
| 93 | + |
| 94 | +@val @scope("Promise") |
| 95 | +external allSettled6: ( |
| 96 | + (promise<'a0>, promise<'a1>, promise<'a2>, promise<'a3>, promise<'a4>, promise<'a5>) |
| 97 | +) => promise<( |
| 98 | + settledResult<'a0>, |
| 99 | + settledResult<'a1>, |
| 100 | + settledResult<'a2>, |
| 101 | + settledResult<'a3>, |
| 102 | + settledResult<'a4>, |
| 103 | + settledResult<'a5>, |
| 104 | +)> = "allSettled" |
| 105 | + |
55 | 106 | @val @scope("Promise") external race: array<promise<'a>> => promise<'a> = "race"
|
56 | 107 |
|
57 | 108 | external unsafe_async: 'a => promise<'a> = "%identity"
|
|
0 commit comments