场景:
要在Angular 6中编写的代码:
return this._http.post(this.apiBaseUrl + "/api/login", body, options)
.timeoutWith(Constant.timeout, Observable.throw(new Error(Constant.timeoutMsg)))
.map(response => {
const result = response.json() as LoginResultModel;
if (result.AccessToken != null) {
this.setLoginToken(result);
return result;
} else {
return response;
}
});
答案 0 :(得分:3)
只需使用pipe
方法并将timeoutWith
和map
运算符都作为函数作为参数:
import { throwError } from 'rxjs';
import { map, timeoutWith } from 'rxjs/operators';
return this._httpClient.post<LoginResultModel>(this.apiBaseUrl + "/api/login", body, options)
.pipe(
timeoutWith(Constant.timeout, throwError(new Error(Constant.timeoutMsg))),
map(result => {
if (result.AccessToken != null) {
this.setLoginToken(result);
return result;
} else {
return response;
}
})
);
有关RxJS 6中的可插值运算符的更多信息:
https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
请注意,我还使用了HttpClientModule
,在这里您无需使用response.json()
方法,有关此内容的更多信息: