refactor(http): use Observables in Http backends
BREAKING CHANGE: Http now returns Rx Observables directly, so calling .toRx() is no longer necessary. Additionally, Http calls are now cold, so backend requests will not fire unless .subscribe() is called. closes #4043 and closes #2974 Closes #4376
This commit is contained in:
@@ -34,19 +34,9 @@ function mergeOptions(defaultOpts, providedOpts, method, url): RequestOptions {
|
||||
* Performs http requests using `XMLHttpRequest` as the default backend.
|
||||
*
|
||||
* `Http` is available as an injectable class, with methods to perform http requests. Calling
|
||||
* `request` returns an {@link EventEmitter} which will emit a single {@link Response} when a
|
||||
* `request` returns an {@link Observable} which will emit a single {@link Response} when a
|
||||
* response is received.
|
||||
*
|
||||
*
|
||||
* ## Breaking Change
|
||||
*
|
||||
* Previously, methods of `Http` would return an RxJS Observable directly. For now,
|
||||
* the `toRx()` method of {@link EventEmitter} needs to be called in order to get the RxJS
|
||||
* Subject. `EventEmitter` does not provide combinators like `map`, and has different semantics for
|
||||
* subscribing/observing. This is temporary; the result of all `Http` method calls will be either an
|
||||
* Observable
|
||||
* or Dart Stream when [issue #2794](https://github.com/angular/angular/issues/2794) is resolved.
|
||||
*
|
||||
* #Example
|
||||
*
|
||||
* ```
|
||||
@@ -56,8 +46,6 @@ function mergeOptions(defaultOpts, providedOpts, method, url): RequestOptions {
|
||||
* class PeopleComponent {
|
||||
* constructor(http: Http) {
|
||||
* http.get('people.json')
|
||||
* //Get the RxJS Subject
|
||||
* .toRx()
|
||||
* // Call map on the response observable to get the parsed people object
|
||||
* .map(res => res.json())
|
||||
* // Subscribe to the observable to get the parsed people object and attach it to the
|
||||
@@ -67,9 +55,6 @@ function mergeOptions(defaultOpts, providedOpts, method, url): RequestOptions {
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* To use the {@link EventEmitter} returned by `Http`, simply pass a generator (See "interface
|
||||
*Generator" in the Async Generator spec: https://github.com/jhusain/asyncgenerator) to the
|
||||
*`observer` method of the returned emitter, with optional methods of `next`, `throw`, and `return`.
|
||||
*
|
||||
* #Example
|
||||
*
|
||||
@@ -95,7 +80,7 @@ function mergeOptions(defaultOpts, providedOpts, method, url): RequestOptions {
|
||||
* [MockBackend, BaseRequestOptions])
|
||||
* ]);
|
||||
* var http = injector.get(Http);
|
||||
* http.get('request-from-mock-backend.json').toRx().subscribe((res:Response) => doSomething(res));
|
||||
* http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));
|
||||
* ```
|
||||
*
|
||||
**/
|
||||
|
||||
Reference in New Issue
Block a user