efa*_*ley 6 observable rxjs angular
我试图重试我的请求,以便我可以在发送用户再次登录之前获得刷新令牌,但是当我尝试使用retryWhen请求时我收到错误,我不知道为什么.
http.service.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
@Injectable()
export class HttpService {
constructor(
private http: Http
) { }
public get(url: string, headers?: Headers): Observable<any> {
return this.http.get(url, this.getHeaders(headers))
.map(this.extractData)
.retryWhen((error: any) => { ... }) // [ts] Property 'retryWhen' does not exist on type 'Observable<any>'.
.catch(this.handleError);
}
}
Run Code Online (Sandbox Code Playgroud)
Omr*_*zon 10
在使用之前必须首先导入运算符(对于其他运算符,它的作用相同)
将它放在文件顶部的导入中:
import 'rxjs/add/operator/retryWhen';
Run Code Online (Sandbox Code Playgroud)
它将此运算符添加到Observable原型的顶部.
使用几天后,Omri 发布的原始解决方案导致了一些问题,有时无法找到该属性。(它在某些版本中有效,但在其他版本中无效)。我最终找到了一个更好的解决方案,该解决方案工作更加一致并且不需要额外的导入。
不是从 rxjs/Observable 导入 Observable,而是从 rxjs/Rx 导入它。
这不起作用:
import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)
这确实有效:
import { Observable } from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4169 次 |
| 最近记录: |