source: vendor/guzzlehttp/promises/src/Each.php@ e3d4e0a

Last change on this file since e3d4e0a was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload project files

  • Property mode set to 100644
File size: 2.6 KB
Line 
1<?php
2
3declare(strict_types=1);
4
5namespace GuzzleHttp\Promise;
6
7final class Each
8{
9 /**
10 * Given an iterator that yields promises or values, returns a promise that
11 * is fulfilled with a null value when the iterator has been consumed or
12 * the aggregate promise has been fulfilled or rejected.
13 *
14 * $onFulfilled is a function that accepts the fulfilled value, iterator
15 * index, and the aggregate promise. The callback can invoke any necessary
16 * side effects and choose to resolve or reject the aggregate if needed.
17 *
18 * $onRejected is a function that accepts the rejection reason, iterator
19 * index, and the aggregate promise. The callback can invoke any necessary
20 * side effects and choose to resolve or reject the aggregate if needed.
21 *
22 * @param mixed $iterable Iterator or array to iterate over.
23 */
24 public static function of(
25 $iterable,
26 ?callable $onFulfilled = null,
27 ?callable $onRejected = null
28 ): PromiseInterface {
29 return (new EachPromise($iterable, [
30 'fulfilled' => $onFulfilled,
31 'rejected' => $onRejected,
32 ]))->promise();
33 }
34
35 /**
36 * Like of, but only allows a certain number of outstanding promises at any
37 * given time.
38 *
39 * $concurrency may be an integer or a function that accepts the number of
40 * pending promises and returns a numeric concurrency limit value to allow
41 * for dynamic a concurrency size.
42 *
43 * @param mixed $iterable
44 * @param int|callable $concurrency
45 */
46 public static function ofLimit(
47 $iterable,
48 $concurrency,
49 ?callable $onFulfilled = null,
50 ?callable $onRejected = null
51 ): PromiseInterface {
52 return (new EachPromise($iterable, [
53 'fulfilled' => $onFulfilled,
54 'rejected' => $onRejected,
55 'concurrency' => $concurrency,
56 ]))->promise();
57 }
58
59 /**
60 * Like limit, but ensures that no promise in the given $iterable argument
61 * is rejected. If any promise is rejected, then the aggregate promise is
62 * rejected with the encountered rejection.
63 *
64 * @param mixed $iterable
65 * @param int|callable $concurrency
66 */
67 public static function ofLimitAll(
68 $iterable,
69 $concurrency,
70 ?callable $onFulfilled = null
71 ): PromiseInterface {
72 return self::ofLimit(
73 $iterable,
74 $concurrency,
75 $onFulfilled,
76 function ($reason, $idx, PromiseInterface $aggregate): void {
77 $aggregate->reject($reason);
78 }
79 );
80 }
81}
Note: See TracBrowser for help on using the repository browser.