2
2
3
3
namespace Rx \React ;
4
4
5
- use React \Promise \CancellablePromiseInterface ;
6
5
use React \Promise \Promise as ReactPromise ;
7
6
use React \Promise \PromiseInterface ;
8
7
use Rx \Disposable \CallbackDisposable ;
11
10
use Rx \Observable \AnonymousObservable ;
12
11
use Rx \Subject \AsyncSubject ;
13
12
use React \Promise \Deferred ;
13
+ use Throwable ;
14
14
15
+ /**
16
+ * @template T
17
+ */
15
18
final class Promise
16
19
{
17
20
/**
18
- * @param mixed $value
19
- * @return ReactPromise A promise resolved to $value
21
+ * @param T $value
22
+ * @return PromiseInterface<T> A promise resolved to $value
20
23
*/
21
24
public static function resolved ($ value ): ReactPromise
22
25
{
@@ -27,21 +30,21 @@ public static function resolved($value): ReactPromise
27
30
28
31
/**
29
32
* @param mixed $exception
30
- * @return ReactPromise A promise rejected with $exception
33
+ * @return PromiseInterface<never> A promise rejected with $exception
31
34
*/
32
35
public static function rejected ($ exception ): ReactPromise
33
36
{
34
37
$ d = new Deferred ();
35
- $ d ->reject ($ exception );
38
+ $ d ->reject ($ exception instanceof Throwable ? $ exception : new RejectedPromiseException ( $ exception ) );
36
39
return $ d ->promise ();
37
40
}
38
41
39
42
/**
40
43
* Converts an existing observable sequence to React Promise
41
44
*
42
- * @param ObservableInterface $observable
45
+ * @param ObservableInterface<T> $observable
43
46
* @param Deferred $deferred
44
- * @return ReactPromise
47
+ * @return ReactPromise<T>
45
48
* @throws \InvalidArgumentException
46
49
*/
47
50
public static function fromObservable (ObservableInterface $ observable , Deferred $ deferred = null ): ReactPromise
@@ -94,7 +97,7 @@ function ($error) use ($subject) {
94
97
$ disp = $ subject ->subscribe ($ observer );
95
98
return new CallbackDisposable (function () use ($ p , $ disp ) {
96
99
$ disp ->dispose ();
97
- if ($ p instanceof CancellablePromiseInterface ) {
100
+ if (\method_exists ( $ p , ' cancel ' ) ) {
98
101
$ p ->cancel ();
99
102
}
100
103
});
0 commit comments