3
3
namespace Rx \React ;
4
4
5
5
use React \Promise \CancellablePromiseInterface ;
6
+ use React \Promise \Promise as ReactPromise ;
7
+ use React \Promise \PromiseInterface ;
6
8
use Rx \Disposable \CallbackDisposable ;
7
9
use Rx \ObservableInterface ;
8
10
use Rx \Observable ;
9
11
use Rx \Observable \AnonymousObservable ;
10
- use Rx \Observer \CallbackObserver ;
11
12
use Rx \Subject \AsyncSubject ;
12
13
use React \Promise \Deferred ;
13
14
14
15
final class Promise
15
16
{
16
17
/**
17
18
* @param mixed $value
18
- * @return \React\Promise\Promise A promise resolved to $value
19
+ * @return ReactPromise A promise resolved to $value
19
20
*/
20
- public static function resolved ($ value )
21
+ public static function resolved ($ value ): ReactPromise
21
22
{
22
23
$ d = new Deferred ();
23
24
$ d ->resolve ($ value );
@@ -26,9 +27,9 @@ public static function resolved($value)
26
27
27
28
/**
28
29
* @param mixed $exception
29
- * @return \React\Promise\Promise A promise rejected with $exception
30
+ * @return ReactPromise A promise rejected with $exception
30
31
*/
31
- public static function rejected ($ exception )
32
+ public static function rejected ($ exception ): ReactPromise
32
33
{
33
34
$ d = new Deferred ();
34
35
$ d ->reject ($ exception );
@@ -40,14 +41,15 @@ public static function rejected($exception)
40
41
*
41
42
* @param ObservableInterface $observable
42
43
* @param Deferred $deferred
43
- * @return \React\Promise\Promise
44
+ * @return ReactPromise
45
+ * @throws \InvalidArgumentException
44
46
*/
45
- public static function fromObservable (ObservableInterface $ observable , Deferred $ deferred = null ): \ React \ Promise \ Promise
47
+ public static function fromObservable (ObservableInterface $ observable , Deferred $ deferred = null ): ReactPromise
46
48
{
47
49
$ d = $ deferred ?: new Deferred ();
48
50
$ value = null ;
49
51
50
- $ observable ->subscribe (new CallbackObserver (
52
+ $ observable ->subscribe (
51
53
function ($ v ) use (&$ value ) {
52
54
$ value = $ v ;
53
55
},
@@ -57,18 +59,19 @@ function ($error) use ($d) {
57
59
function () use ($ d , &$ value ) {
58
60
$ d ->resolve ($ value );
59
61
}
60
- )) ;
62
+ );
61
63
62
64
return $ d ->promise ();
63
65
}
64
66
65
67
/**
66
68
* Converts a Promise to an Observable sequence
67
69
*
68
- * @param CancellablePromiseInterface $promise
69
- * @return Observable\AnonymousObservable
70
+ * @param PromiseInterface $promise
71
+ * @return Observable
72
+ * @throws \InvalidArgumentException
70
73
*/
71
- public static function toObservable (CancellablePromiseInterface $ promise ): AnonymousObservable
74
+ public static function toObservable (PromiseInterface $ promise ): Observable
72
75
{
73
76
$ subject = new AsyncSubject ();
74
77
@@ -87,7 +90,9 @@ function ($error) use ($subject) {
87
90
$ disp = $ subject ->subscribe ($ observer );
88
91
return new CallbackDisposable (function () use ($ p , $ disp ) {
89
92
$ disp ->dispose ();
90
- $ p ->cancel ();
93
+ if ($ p instanceof CancellablePromiseInterface) {
94
+ $ p ->cancel ();
95
+ }
91
96
});
92
97
});
93
98
}
0 commit comments