Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
1441 ariadna 3
declare(strict_types=1);
4
 
1 efrain 5
namespace GuzzleHttp\Promise;
6
 
7
/**
8
 * A promise represents the eventual result of an asynchronous operation.
9
 *
10
 * The primary way of interacting with a promise is through its then method,
11
 * which registers callbacks to receive either a promise’s eventual value or
12
 * the reason why the promise cannot be fulfilled.
13
 *
1441 ariadna 14
 * @see https://promisesaplus.com/
1 efrain 15
 */
16
interface PromiseInterface
17
{
1441 ariadna 18
    public const PENDING = 'pending';
19
    public const FULFILLED = 'fulfilled';
20
    public const REJECTED = 'rejected';
1 efrain 21
 
22
    /**
23
     * Appends fulfillment and rejection handlers to the promise, and returns
24
     * a new promise resolving to the return value of the called handler.
25
     *
26
     * @param callable $onFulfilled Invoked when the promise fulfills.
27
     * @param callable $onRejected  Invoked when the promise is rejected.
28
     */
29
    public function then(
1441 ariadna 30
        ?callable $onFulfilled = null,
31
        ?callable $onRejected = null
32
    ): PromiseInterface;
1 efrain 33
 
34
    /**
35
     * Appends a rejection handler callback to the promise, and returns a new
36
     * promise resolving to the return value of the callback if it is called,
37
     * or to its original fulfillment value if the promise is instead
38
     * fulfilled.
39
     *
40
     * @param callable $onRejected Invoked when the promise is rejected.
41
     */
1441 ariadna 42
    public function otherwise(callable $onRejected): PromiseInterface;
1 efrain 43
 
44
    /**
45
     * Get the state of the promise ("pending", "rejected", or "fulfilled").
46
     *
47
     * The three states can be checked against the constants defined on
48
     * PromiseInterface: PENDING, FULFILLED, and REJECTED.
49
     */
1441 ariadna 50
    public function getState(): string;
1 efrain 51
 
52
    /**
53
     * Resolve the promise with the given value.
54
     *
55
     * @param mixed $value
56
     *
57
     * @throws \RuntimeException if the promise is already resolved.
58
     */
1441 ariadna 59
    public function resolve($value): void;
1 efrain 60
 
61
    /**
62
     * Reject the promise with the given reason.
63
     *
64
     * @param mixed $reason
65
     *
66
     * @throws \RuntimeException if the promise is already resolved.
67
     */
1441 ariadna 68
    public function reject($reason): void;
1 efrain 69
 
70
    /**
71
     * Cancels the promise if possible.
72
     *
1441 ariadna 73
     * @see https://github.com/promises-aplus/cancellation-spec/issues/7
1 efrain 74
     */
1441 ariadna 75
    public function cancel(): void;
1 efrain 76
 
77
    /**
78
     * Waits until the promise completes if possible.
79
     *
80
     * Pass $unwrap as true to unwrap the result of the promise, either
81
     * returning the resolved value or throwing the rejected exception.
82
     *
83
     * If the promise cannot be waited on, then the promise will be rejected.
84
     *
85
     * @return mixed
86
     *
87
     * @throws \LogicException if the promise has no wait function or if the
88
     *                         promise does not settle after waiting.
89
     */
1441 ariadna 90
    public function wait(bool $unwrap = true);
1 efrain 91
}