在Observable.timer(0, 1000)的帮助下,我正在以定义的时间模式向我的服务器发出连续请求。如何删除Observable的响应
@Injectable()
export class LoggerService {
constructor(private http: Http) { }
private apiURL = 'assets/file.json';
getList() {
return Observable.timer(0, 1000)
.concatMap(() => this.http.get(this.apiURL))
.map(this.extractData)
.catch(this.handleError););
}
private extractData(res: Response) {
var fooot = new Foo();
fooot.fillFromJSON(JSON.stringify(res.json()));
if(fooot.getProperty()){
//DROP IT
}
return fooot;
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg);
return Observable.throw(errMsg);
}
}
的:经过我处理的响应的内容是特殊条件和根据之前的响应,我需要删除的响应,因此不要将其传递给服务的用户下是可能的getList()
方法然后从一个组件调用ngOnInit
。 目前有两种可能的解决方案,我能想到的,买也许有解决这个问题的一个更好/更清晰的做法:如果我不得不放弃我创建了一个特殊对象的响应这是公认
由
getList()
的用户再进行具体处理。但是这个解决方案会非常难看,因为丢弃的响应会离开我的服务,我需要额外编写代码以外的代码来处理这种情况。当我不得不放弃响应时,我抛出异常。然后,异常被捕获,被识别(与其他情况不同),然后在没有任何通知/输出的情况下丢弃。之后,可观测值重新启动。这种方法的优点是应该放弃的观测值不会离开服务,但我不喜欢在这种情况下控制流的异常使用情况。
我尝试了两种解决方案,他们都在工作,但我希望有一些更好的方法。
我不想停止一个http请求,我只想忽略/放弃它的响应。 – Akkusativobjekt