File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -72,6 +72,25 @@ describe('Observable.fromPromise', () => {
72
72
} ) ;
73
73
} ) ;
74
74
75
+ it ( 'should accept PromiseLike object for interoperability' , ( done : MochaDone ) => {
76
+ class CustomPromise < T > implements PromiseLike < T > {
77
+ constructor ( private promise : PromiseLike < T > ) {
78
+ }
79
+ then ( onFulfilled ?, onRejected ?) : PromiseLike < T > {
80
+ return new CustomPromise ( this . promise . then ( onFulfilled , onRejected ) ) ;
81
+ } ;
82
+ }
83
+ const promise = new CustomPromise ( Promise . resolve ( 42 ) ) ;
84
+ Observable . fromPromise ( promise )
85
+ . subscribe (
86
+ ( x : number ) => { expect ( x ) . to . equal ( 42 ) ; } ,
87
+ ( ) => {
88
+ done ( new Error ( 'should not be called' ) ) ;
89
+ } , ( ) => {
90
+ done ( ) ;
91
+ } ) ;
92
+ } ) ;
93
+
75
94
it ( 'should emit a value from a resolved promise on a separate scheduler' , ( done : MochaDone ) => {
76
95
const promise = Promise . resolve ( 42 ) ;
77
96
Observable . fromPromise ( promise , Rx . Scheduler . asap )
Original file line number Diff line number Diff line change @@ -31,19 +31,19 @@ export class PromiseObservable<T> extends Observable<T> {
31
31
* @see {@link bindCallback }
32
32
* @see {@link from }
33
33
*
34
- * @param {Promise <T> } promise The promise to be converted.
34
+ * @param {PromiseLike <T> } promise The promise to be converted.
35
35
* @param {Scheduler } [scheduler] An optional IScheduler to use for scheduling
36
36
* the delivery of the resolved value (or the rejection).
37
37
* @return {Observable<T> } An Observable which wraps the Promise.
38
38
* @static true
39
39
* @name fromPromise
40
40
* @owner Observable
41
41
*/
42
- static create < T > ( promise : Promise < T > , scheduler ?: IScheduler ) : Observable < T > {
42
+ static create < T > ( promise : PromiseLike < T > , scheduler ?: IScheduler ) : Observable < T > {
43
43
return new PromiseObservable ( promise , scheduler ) ;
44
44
}
45
45
46
- constructor ( private promise : Promise < T > , private scheduler ?: IScheduler ) {
46
+ constructor ( private promise : PromiseLike < T > , private scheduler ?: IScheduler ) {
47
47
super ( ) ;
48
48
}
49
49
You can’t perform that action at this time.
0 commit comments