17
17
*
18
18
* If `$promiseOrValue` is a promise, it will be returned as is.
19
19
*
20
- * @param mixed $promiseOrValue
21
- * @return PromiseInterface
20
+ * @template T
21
+ * @param PromiseInterface<T>|T $promiseOrValue
22
+ * @return PromiseInterface<T>
22
23
*/
23
24
function resolve ($ promiseOrValue ): PromiseInterface
24
25
{
@@ -31,6 +32,7 @@ function resolve($promiseOrValue): PromiseInterface
31
32
32
33
if (\method_exists ($ promiseOrValue , 'cancel ' )) {
33
34
$ canceller = [$ promiseOrValue , 'cancel ' ];
35
+ assert (\is_callable ($ canceller ));
34
36
}
35
37
36
38
return new Promise (function ($ resolve , $ reject ) use ($ promiseOrValue ): void {
@@ -54,8 +56,7 @@ function resolve($promiseOrValue): PromiseInterface
54
56
* throwing an exception. For example, it allows you to propagate a rejection with
55
57
* the value of another promise.
56
58
*
57
- * @param \Throwable $reason
58
- * @return PromiseInterface
59
+ * @return PromiseInterface<never>
59
60
*/
60
61
function reject (\Throwable $ reason ): PromiseInterface
61
62
{
@@ -68,8 +69,9 @@ function reject(\Throwable $reason): PromiseInterface
68
69
* will be an array containing the resolution values of each of the items in
69
70
* `$promisesOrValues`.
70
71
*
71
- * @param iterable<mixed> $promisesOrValues
72
- * @return PromiseInterface
72
+ * @template T
73
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
74
+ * @return PromiseInterface<array<T>>
73
75
*/
74
76
function all (iterable $ promisesOrValues ): PromiseInterface
75
77
{
@@ -119,14 +121,15 @@ function (\Throwable $reason) use (&$continue, $reject): void {
119
121
* The returned promise will become **infinitely pending** if `$promisesOrValues`
120
122
* contains 0 items.
121
123
*
122
- * @param iterable<mixed> $promisesOrValues
123
- * @return PromiseInterface
124
+ * @template T
125
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
126
+ * @return PromiseInterface<T>
124
127
*/
125
128
function race (iterable $ promisesOrValues ): PromiseInterface
126
129
{
127
130
$ cancellationQueue = new Internal \CancellationQueue ();
128
131
129
- return new Promise (function ($ resolve , $ reject ) use ($ promisesOrValues , $ cancellationQueue ): void {
132
+ return new Promise (function (callable $ resolve , callable $ reject ) use ($ promisesOrValues , $ cancellationQueue ): void {
130
133
$ continue = true ;
131
134
132
135
foreach ($ promisesOrValues as $ promiseOrValue ) {
@@ -154,8 +157,9 @@ function race(iterable $promisesOrValues): PromiseInterface
154
157
* The returned promise will also reject with a `React\Promise\Exception\LengthException`
155
158
* if `$promisesOrValues` contains 0 items.
156
159
*
157
- * @param iterable<mixed> $promisesOrValues
158
- * @return PromiseInterface
160
+ * @template T
161
+ * @param iterable<PromiseInterface<T>|T> $promisesOrValues
162
+ * @return PromiseInterface<T>
159
163
*/
160
164
function any (iterable $ promisesOrValues ): PromiseInterface
161
165
{
0 commit comments