@@ -68,11 +68,15 @@ function reject(\Throwable $reason): PromiseInterface
6868 * will be an array containing the resolution values of each of the items in
6969 * `$promisesOrValues`.
7070 *
71- * @param array $promisesOrValues
71+ * @param iterable $promisesOrValues
7272 * @return PromiseInterface
7373 */
74- function all (array $ promisesOrValues ): PromiseInterface
74+ function all (iterable $ promisesOrValues ): PromiseInterface
7575{
76+ if (!\is_array ($ promisesOrValues )) {
77+ $ promisesOrValues = \iterator_to_array ($ promisesOrValues );
78+ }
79+
7680 if (!$ promisesOrValues ) {
7781 return resolve ([]);
7882 }
@@ -109,11 +113,15 @@ function ($mapped) use ($i, &$values, &$toResolve, $resolve): void {
109113 * The returned promise will become **infinitely pending** if `$promisesOrValues`
110114 * contains 0 items.
111115 *
112- * @param array $promisesOrValues
116+ * @param iterable $promisesOrValues
113117 * @return PromiseInterface
114118 */
115- function race (array $ promisesOrValues ): PromiseInterface
119+ function race (iterable $ promisesOrValues ): PromiseInterface
116120{
121+ if (!\is_array ($ promisesOrValues )) {
122+ $ promisesOrValues = \iterator_to_array ($ promisesOrValues );
123+ }
124+
117125 if (!$ promisesOrValues ) {
118126 return new Promise (function (): void {});
119127 }
@@ -141,18 +149,22 @@ function race(array $promisesOrValues): PromiseInterface
141149 * The returned promise will also reject with a `React\Promise\Exception\LengthException`
142150 * if `$promisesOrValues` contains 0 items.
143151 *
144- * @param array $promisesOrValues
152+ * @param iterable $promisesOrValues
145153 * @return PromiseInterface
146154 */
147- function any (array $ promisesOrValues ): PromiseInterface
155+ function any (iterable $ promisesOrValues ): PromiseInterface
148156{
157+ if (!\is_array ($ promisesOrValues )) {
158+ $ promisesOrValues = \iterator_to_array ($ promisesOrValues );
159+ }
160+
149161 $ len = \count ($ promisesOrValues );
150162
151163 if (!$ promisesOrValues ) {
152164 return reject (
153165 new Exception \LengthException (
154166 \sprintf (
155- 'Input array must contain at least 1 item but contains only %s item%s. ' ,
167+ 'Must contain at least 1 item but contains only %s item%s. ' ,
156168 $ len ,
157169 1 === $ len ? '' : 's '
158170 )
0 commit comments