X Tutup
Skip to content

Commit c39f4c3

Browse files
committed
refactor(Observable): implement toPromise and fromPromise without side effects
BREAKING CHANGE: toPromise is no longer an instance method of the `Observable` returned by Angular, and fromPromise is no longer available as a static method. The easiest way to account for this change in applications is to import the auto-patching modules from rxjs, which will automatically add these operators back to the Observable prototype. ``` import 'rxjs/add/operator/toPromise'; import 'rxjs/add/observable/fromPromise'; ``` Closes angular#5542 Closes angular#5626
1 parent 1f35048 commit c39f4c3

File tree

7 files changed

+13
-18
lines changed

7 files changed

+13
-18
lines changed

modules/angular2/src/facade/async.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ import {Observable as RxObservable} from 'rxjs/Observable';
99
import {Subscription} from 'rxjs/Subscription';
1010
import {Operator} from 'rxjs/Operator';
1111

12-
import 'rxjs/observable/fromPromise';
13-
import 'rxjs/operators/toPromise';
12+
import {PromiseObservable} from 'rxjs/observable/fromPromise';
13+
import {toPromise} from 'rxjs/operator/toPromise';
1414

1515
export {Subject} from 'rxjs/Subject';
1616

17-
18-
1917
export namespace NodeJS {
2018
export interface Timer {}
2119
}
@@ -62,10 +60,10 @@ export class ObservableWrapper {
6260
static callComplete(emitter: EventEmitter<any>) { emitter.complete(); }
6361

6462
static fromPromise(promise: Promise<any>): Observable<any> {
65-
return RxObservable.fromPromise(promise);
63+
return PromiseObservable.create(promise);
6664
}
6765

68-
static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }
66+
static toPromise(obj: Observable<any>): Promise<any> { return toPromise.call(obj); }
6967
}
7068

7169
/**

modules/angular2/src/http/backends/mock_backend.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import {Connection, ConnectionBackend} from '../interfaces';
66
import {isPresent} from 'angular2/src/facade/lang';
77
import {BaseException, WrappedException} from 'angular2/src/facade/exceptions';
88
import {Subject} from 'rxjs/Subject';
9-
import {ReplaySubject} from 'rxjs/subjects/ReplaySubject';
10-
import 'rxjs/operators/take';
9+
import {ReplaySubject} from 'rxjs/subject/ReplaySubject';
10+
import {take} from 'rxjs/operator/take';
1111

1212
/**
1313
*
@@ -35,7 +35,7 @@ export class MockConnection implements Connection {
3535
response: any; // Subject<Response>
3636

3737
constructor(req: Request) {
38-
this.response = new ReplaySubject(1).take(1);
38+
this.response = take.call(new ReplaySubject(1), 1);
3939
this.readyState = ReadyState.Open;
4040
this.request = req;
4141
}

modules/angular2/test/public_api_spec.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -690,11 +690,8 @@ var NG_ALL = [
690690
'Observable:js',
691691
'Observable#create():js',
692692
'Observable.forEach():js',
693-
'Observable#fromPromise():js',
694693
'Observable.lift():js',
695694
'Observable.subscribe():js',
696-
'Observable.take():js',
697-
'Observable.toPromise():js',
698695

699696
'OutputMetadata',
700697
'OutputMetadata.bindingPropertyName',

modules/playground/src/http/http_comp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Component, View, NgFor} from 'angular2/angular2';
22
import {Http, Response} from 'angular2/http';
3-
import 'rxjs/operators/map';
3+
import 'rxjs/add/operator/map';
44

55
@Component({selector: 'http-app'})
66
@View({

npm-shrinkwrap.clean.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13182,7 +13182,7 @@
1318213182
}
1318313183
},
1318413184
"rxjs": {
13185-
"version": "5.0.0-alpha.11"
13185+
"version": "5.0.0-alpha.13"
1318613186
},
1318713187
"selenium-webdriver": {
1318813188
"version": "2.48.2",

npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
},
3333
"dependencies": {
3434
"reflect-metadata": "0.1.2",
35-
"rxjs": "5.0.0-alpha.11",
35+
"rxjs": "5.0.0-alpha.13",
3636
"zone.js": "0.5.8"
3737
},
3838
"devDependencies": {

0 commit comments

Comments
 (0)
X Tutup