Bri*_*nRT 120 javascript rxjs typescript angular
在Angular 2文档页面上有一个使用Http服务的例子.
getHeroes (): Observable<Stuff[]> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)
我克隆了angular2-webpack-starter项目并自己添加了上面的代码.
我导入Observable使用
import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)
我假设属性Observable也被导入(.map有效).查看rxjs.beta-6的更改日志,没有提到任何内容catch.
Thi*_*ier 239
是的,您需要导入运营商:
import 'rxjs/add/operator/catch';
Run Code Online (Sandbox Code Playgroud)
或者以Observable这种方式导入:
import {Observable} from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,您导入所有运算符.
有关详细信息,请参阅此问题:
Tre*_*ent 81
使用RxJS 5.5+,catch运算符现已弃用.您现在应该catchError结合使用运算符pipe.
RxJS v5.5.2是Angular 5的默认依赖版本.
对于您导入的每个RxJS运算符,包括catchError您现在应该从'rxjs /运算符'导入并使用管道运算符.
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
...
export class ExampleClass {
constructor(private http: HttpClient) {
this.http.request(method, url, options).pipe(
catchError((err: HttpErrorResponse) => {
...
}
)
}
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,这里catch替换为catchError和pipe运算符用于组合运算符的方式与您用于点链的方式类似.
查看该rxjs文档pipable(以前称为可出租获取更多信息)运营商.
小智 9
在角度 8 中:
//for catch:
import { catchError } from 'rxjs/operators';
//for throw:
import { Observable, throwError } from 'rxjs';
//and code should be written like this.
getEmployees(): Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this.url).pipe(catchError(this.erroHandler));
}
erroHandler(error: HttpErrorResponse) {
return throwError(error.message || 'server Error');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81580 次 |
| 最近记录: |