Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
namespace React\Promise;
4
 
5
class Deferred implements PromisorInterface
6
{
7
    private $promise;
8
    private $resolveCallback;
9
    private $rejectCallback;
10
    private $notifyCallback;
11
    private $canceller;
12
 
13
    public function __construct(callable $canceller = null)
14
    {
15
        $this->canceller = $canceller;
16
    }
17
 
18
    public function promise()
19
    {
20
        if (null === $this->promise) {
21
            $this->promise = new Promise(function ($resolve, $reject, $notify) {
22
                $this->resolveCallback = $resolve;
23
                $this->rejectCallback  = $reject;
24
                $this->notifyCallback  = $notify;
25
            }, $this->canceller);
26
            $this->canceller = null;
27
        }
28
 
29
        return $this->promise;
30
    }
31
 
32
    public function resolve($value = null)
33
    {
34
        $this->promise();
35
 
36
        \call_user_func($this->resolveCallback, $value);
37
    }
38
 
39
    public function reject($reason = null)
40
    {
41
        $this->promise();
42
 
43
        \call_user_func($this->rejectCallback, $reason);
44
    }
45
 
46
    /**
47
     * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore.
48
     * @param mixed $update
49
     */
50
    public function notify($update = null)
51
    {
52
        $this->promise();
53
 
54
        \call_user_func($this->notifyCallback, $update);
55
    }
56
 
57
    /**
58
     * @deprecated 2.2.0
59
     * @see Deferred::notify()
60
     */
61
    public function progress($update = null)
62
    {
63
        $this->notify($update);
64
    }
65
}